cancel
Showing results for 
Search instead for 
Did you mean: 

Tag INFCOMP - XML

Former Member
0 Kudos

Pessoal,

Fiz o desenvolvimendo para preenchimento da tag INFCOMP no XML via BADI, porem no XML não está sendo respeitado os espaçamentos.

Ex:

O cliente que recebe o XML da NFE precisa dos espaçamentos, pois tem um programa que le em determinada formatação está TAG.

Verifiquei na /xnfe/valid para ver se tinha algum Flag forçando isso e nenhum deles resolveu.

Alguem saberia me ajudar?

Obrigado,

Bruno

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

Olá Bruno,

você está utilizando o GRC ou outra mensageria ?

henrique_pinto
Active Contributor
0 Kudos

Bruno,

o campo infCpl (suponho q vc esteja falando dele, correto?), a partir do layout 005b, contem a seguinte definicao:

<xs:element name="infCpl" minOccurs="0">
	<xs:annotation>
		<xs:documentation>Informações complementares de interesse do Contribuinte</xs:documentation>
	</xs:annotation>
	<xs:simpleType>
		<xs:restriction base="TString">
			<xs:maxLength value="5000"></xs:maxLength>
			<xs:minLength value="1"></xs:minLength>
		</xs:restriction>
	</xs:simpleType>
</xs:element>

O tipo TString, por sua vez, é definido como:

<xs:simpleType name="TString">
	<xs:annotation>
		<xs:documentation> Tipo string genérico</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:string">
		<xs:whiteSpace value="preserve"></xs:whiteSpace>
		<xs:pattern value="[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}"></xs:pattern>
	</xs:restriction>
</xs:simpleType>

O pattern faz com q vc nao possa ter espaco no inicio ou fim; adicionalmente, se retirou espacos repetidos (utilizando o colapse) para otimizar espacamento.

Como essa regra eh obrigatoria, ela eh executada para todos os campos, sem flag necessariamente.

Att.

Henrique.

Former Member
0 Kudos

É possível alterar essa definição (para permitir espaço entre palavras na INFCOMP) ou é impossível fazer o que o BrunoLima quer ?

Obrigado.

At.,

Bernardo Tavares Braga

former_member182114
Active Contributor
0 Kudos

Bom dia Bernardo,

Em termos standard não é previsto esta situação.

A solução foi trocar no R/3 os espaços em branco por algum caracter não usado, e na BADI do GRC, que é chamada imediatamente antes da assinatura trocar este caracter por espaço.

Desta forma ele conseguiu entregar os dados da forma combinada com o parceiro.

Atenciosamente, Fernando Da Ró

Former Member
0 Kudos

Fernando, obrigado pela diga. Debuguei a Exit da função /XNFE/005A_SIGN_NFE_OUT, porem a tag INFCOMP não é alterada até o envio para assinatura (ou seja, o formato original é mantido neste ponto - com os espaços). O ponto que verifiquei foi o:

method /XNFE/IF_EX_005A_SIGN_NFE_OUT~ENRICH_XML_DATA (BADI). Estou no ponto correto ?

Agradeço desde já pela ajuda.

At.,

Bernardo Tavares Braga

henrique_pinto
Active Contributor
0 Kudos

Bernardo,

sim, esse é o enhancement spot que contem a BAdI que permite fazer "qualquer" alteracao no XML. Tome cuidado, pois pode gerar problema de esquema que causará a invalidacao do mesmo! É uma BAdI muito poderosa mas ao mesmo tempo muito perigosa.

Dentro dela, a estrutura ct_nfe_xml contém a estrutura completa do XML da NFe.

Verifique o campo ct_nfe_xml-inf_adic-inf_cpl.

Abs,

Henrique.

Former Member
0 Kudos

Pois é.

O campo ct_nfe_xml-inf_adic-inf_cpl da BAdI continua inalterado (Permanece com os espaços - que é o que eu quero): Existe o seguinte código nela:

  • Insere no XML os Dados Adicionais

ct_nfe_xml-INF_ADIC-inf_cpl = is_nfe_header-INFCOM

Debugando, até o final da função /XNFE/005A_SIGN_NFE_OUT tambem continua com os espaços

(campo LS_REQUEST-SIGN_NFE-NFE-INF_NFE-INF_ADIC-INF_CPL)

...consigo debugar até começar um código standard em alemão, aí não entendo mais nada.

Onde é feita a validação do TString? Tenho que alterar algum campo de validação dessa tabela ?

Obrigado.

At.,

Bernardo Tavares Braga

henrique_pinto
Active Contributor
0 Kudos

Vc desmarcou a validacao standard? Pq a validacao é antes; se chegou até aí com os espacos extras, entao a validacao nao está sendo executada.

Acho que o problema é mais embaixo, é capaz de que na propria geração do arquivo XML (parte standard da plataforma SAP_BASIS) ele faça o condesation dos whitespaces. Se for esse o caso mesmo (como parece ser) daí não há muita alternativa (a menos utilizar alguma codificacao e.g. Base64 para recuperacao posterior do outro lado).

Abs,

Henrique.

Former Member
0 Kudos

Boa tarde,

Estou com um problema semelhante ao reportado, para atendimento de um cliente, com informações posicionais na tag InfAdProd.

Estamos seguindo a sugestão de substituir os espaços pelo caractere + e na BAdI /XNFE/005A_SIGN_NFE_OUT, onde este caractere é substituído pelos espaços.

Porém, via debugg, notei que o método ENRICH_XML_DATA não é chamado.

Estamos em SLL-NFE    900    0018    SAPK-90018INSLLNFE.

Gostaria de saber se há outra BAdI ou mesmo se é necessária alguma configuração adicional para a BAdI seja "ativada" e passe a funcionar, obviamente, tirando a ativação normal da implementação da mesma, que já está feito.

Obrigado

Filipe E. de Morais

former_member191980
Participant
0 Kudos

Felipe, boa tarde.

Você encontrou a solução para o seu post?


Boa tarde,

Estou com um problema semelhante ao reportado, para atendimento de um cliente, com informações posicionais na tag InfAdProd.

Estamos seguindo a sugestão de substituir os espaços pelo caractere + e na BAdI /XNFE/005A_SIGN_NFE_OUT, onde este caractere é substituído pelos espaços.

Porém, via debugg, notei que o método ENRICH_XML_DATA não é chamado.

Estamos em SLL-NFE    900    0018    SAPK-90018INSLLNFE.

Gostaria de saber se há outra BAdI ou mesmo se é necessária alguma configuração adicional para a BAdI seja "ativada" e passe a funcionar, obviamente, tirando a ativação normal da implementação da mesma, que já está feito.

Obrigado

Filipe E. de Morais

Obrigado

Juliano Diniz

Former Member
0 Kudos

Juliano,

Abrimos um chamado na SAP para o problema e a resposta veio através de uma SAP Note (2129204), que consiste em desligar a validação para o campo InfAdProd.

Por motivo de segurança, eu coloquei o CONDENSE na badi CL_NFE_PRINT, forçando a validação da tag que é feita no GRC, do lado ECC.

Depois dessa CONDENSE, faço a troca do caractere não usado, por espaços em branco, conforme a lógica do Fernando Da Ró nesse post.

Abraço

former_member191980
Participant
0 Kudos

Filipe, grato pelo retorno.

Você está dizendo que se aplicarmos a nota podemos continuar usando o médoto abaixo?

/XNFE/IF_EX_006_SIGN_NFE_OUT~ENRICH_XML_DATA

Na NFE_PRINT colocamos um caracter especial e depois retiramos no método acima.

Abraços

Juliano Diniz

Renan_Correa
Active Contributor
0 Kudos

Oi Juliano,

Na NFe 3.10 não existe mais chamada para o método ENRICH_XML_DATA.

att,

Renan

Former Member
0 Kudos

Não,

Fiz o preenchimento da tag na BAdI CL_NFE_PRINT do lado do ECC, trocando os espaços por "+".

Como temos lógicas para atender outros clientes, coloquei um CONDENSE, que é a "validação" feita no GRC.

Depois disso, fiz a lógica inversa, trocando o caractere "+" por espaços.

A nota diz apenas para que seja "desligada" a validação na tag InfAdProd:

For updating the validation for field infAdProd, please follow the listed steps:

1. Enter transaction SM30 with view /XNFE/V_XMLVALID

2. Select the entries with the following keys in edit mode:

NFE 55 3.10 IT_NFE_DET INF_AD_PROD

NFE 65 3.10 IT_NFE_DET INF_AD_PROD

3. Delete the 'X' in field NO_BLANKS.

former_member191980
Participant
0 Kudos

Filipe e Renan, boa tarde.

Qual a BADI que foi utilizada na lógica do Fernando Da Ró nesse post?

Abraços

Juliano Diniz

Former Member
0 Kudos

No meu caso, usei a BAdI CL_NFE_PRINT, no ECC.

Não tive sucesso com nenhuma BAdI do lado do GRC

former_member182114
Active Contributor
0 Kudos

Bom dia Bruno,

Um dos papeis do validador é filtrar os dados para entrega à Sefaz. A partir do layout 1.10 (005C), passou a ser exigido, em alguns campos, que não tenham espaços repetidos.

O que impossibilita o que você está tentando. Não sei se todas as Secretarias já implementaram isto em seus softwares. De qualquer forma é melhor você negociar com seu cliente uma nova forma de tratar as informações.

Ex.: Ao invés de tamanho fixo, simular separação de campos com pipeline:

Bruno Lima          2009           AZUL

por

Bruno Lima|2009|AZUL

Atenciosamente,

Fernando Da Ró