cancel
Showing results for 
Search instead for 
Did you mean: 

Problema B2B

rhviana
Active Contributor
0 Kudos

Bom dia all,

Estou com um pequeno problema no B2B dinâmico. Já verifiquei esse post

O problema que está aparecendo na sxi_monitor é:

Tem um código java nesse envio dinâmico:

A variavel email é iniciada com (null), descendo código você pode verificar que ela recebe um valor, por algum motivo continua nulo.

A função já foi testada no ECC e está retornando o e-mail.

Channel channel = null;

RfcAccessor accessor = null;

String email = null;

try {

// Retreive the communication channel

channel = LookupService.getChannel(busSystem, commChannel);

// Get a RFC accessor for the channel

accessor = LookupService.getRfcAccessor(channel);

// Define the RFC Request Message

String req = "";

// Create the xml inputstream

InputStream inputStream = new ByteArrayInputStream(req.getBytes("UTF-8"));

// Create xml payload

XmlPayload payload = LookupService.getXmlPayload(inputStream);

// Execute lookup

XmlPayload result = accessor.call(payload);

// Get the response

InputStream resp = result.getContent();

// Parse the response

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

Document doc = builder.parse(resp);

Node node = (Node) doc.getElementsByTagName("e_mail").item(0);

if (node.hasChildNodes() && !node.getFirstChild().getNodeValue().equals("")){

email = node.getFirstChild().getNodeValue();

}

} catch (Exception e) {

trace.addWarning("RFC Lookup Failed: " + e);

} finally {

// Close the accessor in order to free resources.

if (accessor!=null) {

try {

accessor.close();

} catch (Exception e) {

trace.addWarning("Error while closing accessor: " + e);

}

}

}

return email;

Alguem já passou por essa situação ? Tem alguma luz ?

Atenciosamente,

Ricardo

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Ricardo,

Está chamando a Function do ECC direto pelo C.Channel ou está fazendo como o file do Henrique?

Criou uma rfc no Netweaver e dele chama a rfc no ECC?

Você importou a RFC no design? Se sim é pq ela está com o flag de RFC o que poderia ser problema também.

No mapping vc passa uma Constante com o nome do C.Channel (Adapter RFC) do Integration, chegou a comparar o nomes?

Na Moni veja o DynamicConfiguration tambem se passou algo... apesar que se deu pau na chamada da Function, vai estar nulo ou com "oi" conforme você postou...

Dá uma verificada nisso + o trace que o Henrique passou que com ctz irá funcionar...

Abraço,

Bruno Lima

henrique_pinto
Active Contributor
0 Kudos

Ricardo,

após a linha "InputStream resp = result.getContent();", adicione uma entrada no trace com o conteudo desse result.

Assim vc poderá verificar o retorno da RFC em runtime.

Abs,

Henrique.

rhviana
Active Contributor
0 Kudos

Henrique,

Como seria o código do trace ?

// Execute lookup

XmlPayload result = accessor.call(payload);

// Get the response

InputStream resp = result.getContent();

trace.addWarning(resp);

??

Assim não funcionou. Estou sem esclipse aqui para monstra a lista de metodos do trace.

Estava fazendo um teste Henrique, o código pula essa parte:

if (node.hasChildNodes() && !node.getFirstChild().getNodeValue().equals("")){

email = node.getFirstChild().getNodeValue();

}

}

catch (Exception e) {

trace.addWarning("RFC Lookup Failed: " + e);

email="oi";

}

sxi_monitor:

<SAP:AdditionalText>com.sap.aii.af.ra.ms.api.RecoverableException: java.io.IOException: server not responding OK to RCPT TO; 504 5.5.2 <oi>: Recipient address rejected: need fully-qualified address</SAP:AdditionalText>

Att,

Edited by: rviana on Sep 13, 2010 7:47 PM

Edited by: rviana on Sep 13, 2010 7:50 PM

rhviana
Active Contributor
0 Kudos

Alguma luz ?

Atenciosamente,

henrique_pinto
Active Contributor
0 Kudos

Oi Ricardo,

o resp é uma InputStream, vc precisa pegar o conteudo, jogar pra uma String e só depois dar um trace.addInfo() ou .addWarning().

Pode tb tentar jogar o documento já parseado (trace.addInfo(doc.toString()) ou algo assim).

Abs,

Henrique.

rhviana
Active Contributor
0 Kudos

Primeiramente obrigado pela atenção dos dois.

Segundo ponto. Henrique realizei 3 testes :

Primeiro testes:

Channel channel = null;

RfcAccessor accessor = null;

String email = null;

String var1 = null ;

String var2 = null ;

String var3= null;

try {.....

// Get the response

InputStream resp = result.getContent();

var1 = resp.toString();

...

return var1;

O que apareceu na sxi_monitor:

com.sap.aii.af.ra.ms.api.RecoverableException: java.io.IOException: server not responding OK to RCPT TO; 504 5.5.2 <java.io.ByteArrayInputStream@6def6def>: Recipient address rejected: need fully-qualified address

Segundo teste utilizando a variavel var2:

// Parse the response

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

Document doc = builder.parse(resp);

var2 = doc.toString();

..

return var2;

O que apareceu na sxi_monitor:

com.sap.aii.af.ra.ms.api.RecoverableException: java.io.IOException: server not responding OK to RCPT TO; 504 5.5.2 </rfc:ZFSD_BUSCA_EMAIL_POR_CNPJ.Response>: Recipient address rejected: need fully-qualified address

Terceiro testes com a variavel var3:

Node node = (Node) doc.getElementsByTagName("e_mail").item(0);

var3= node.toString();

TagName("e_mail") era para estar vindo o e-mail do respectivo CNPJ mais olha o que aparece na sxi_monitor:

com.sap.aii.af.ra.ms.api.RecoverableException: java.io.IOException: server not responding OK to RCPT TO; 504 5.5.2 <null>: Recipient address rejected: need fully-qualified address

Acredito que a função que o abap criou está retornando null para tudo.

Abs,

Ricardo

henrique_pinto
Active Contributor
0 Kudos

Nao é pra jogar o conteudo todo pro return!

Eh pra jogar no trace, que vc pode observar na SXMB_MONI, na entry "Request Message Mapping" do pipeline.

Abs,

Henrique.

rhviana
Active Contributor
0 Kudos

Henrique,

Coloquei os traces e continua NULL.

Tilt aqui ... !!

Abs

henrique_pinto
Active Contributor
0 Kudos

Entao seu codigo tem algum erro.

O documento de resposta todo nao pode estar null.

Acho que vc está meio perdido, alterando o codigo direto na UDF.

Eu sugiro criar um projeto no eclipse pra auxiliar, e daí passar os parametros corretamente.

Mas provavelmente o campo em questao nao existe ou nao está sendo preenchido na resposta da RFC (nao achou email).

Abs,

Henrique.

rhviana
Active Contributor
0 Kudos

Henrique,

O UDF foi alterado sim, pode ser verificado só que já o utilizei em 5 clientes distintos e todos funcionaram, e a primeira vez que me deparo com essa situação.

Vou rever os pontos novamente, pedir uma revisão abap sobre a função.

Obrigado.

Att,

Former Member
0 Kudos

Ricardo,

Já tive casos que o UDF era o mesmo em vários clientes e também não funcionava.

- Criei a RFC como nome diferente, mas parecido.. campos com nomes errado e sem opção de ser uma RFC mesmo..rs

- Mapping passar um C.Channel com nome diferente do criado no integration...

- C.Channel com autenticação errada

Não sei se chegou a fazer isso mas no Audti Log do C.Channel RFC para buscar o e-mail no abap, você consegue ver se pelo menos ele tentou executar a RFC....

Abraço,

Bruno Lima