on 04-22-2009 6:38 PM
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
Olá Bruno,
você está utilizando o GRC ou outra mensageria ?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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ó
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
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.
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
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.
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
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
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
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.
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ó
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
12 | |
3 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.