cancel
Showing results for 
Search instead for 
Did you mean: 

Third Party (RFC) --> XI --> R/3 (RFC)

philipp_wagner2
Explorer
0 Kudos

Dear all,

We are going to connect a non-SAP system with RFC to XI.

The problem is that the thrid party system sends its RFC calls to the ABAP-stack instead of to the RFC-sender-adapter. Of course the function modules do not exist in XI but only in the target R/3.

I tested the scenario with the help of another system (R/3), here the RFC-calls work properly and get successfully through Integration Engine and I get the answer back from the target system.

Does somebody know why the third party system sends its RFC-calls to the ABAP-stack? In RFC sender channel I enabled "Advanced mode" and disabled "Verify sender system".

Thanks a lot and best regards,

philipp

Accepted Solutions (0)

Answers (1)

Answers (1)

henrique_pinto
Active Contributor
0 Kudos

R/3's function module will send the call to the r/3 rfc server, through a predefined RFC Destination (which you have to refer in the funciton module, right after the CALL method) which will bypass this code to the program which connects to the rfc server using the same Program ID of that RFC Destination.

Check out if your RFC Destination (SM59 of R/3) is properly created (registered program, program ID matching adapter's, gateway informations matching R/3 server informations).

Regards,

Henrique.

philipp_wagner2
Explorer
0 Kudos

Hi,

how can I force the RFC call to go through Integration Engine instead of calling function modules in XI ABAP?

Thanks,

Philipp

philipp_wagner2
Explorer
0 Kudos

I wrote a Java program using JCO - this call goes to ABAP stack, too. How can I send a RFC call to Integration Engine?

henrique_pinto
Active Contributor
0 Kudos

As far as I know, RFC server relies on ABAP Stack, so you won't be able to bypass it, but I am not sure that there's not a way of doing it.

Regards,

Henrique.

philipp_wagner2
Explorer
0 Kudos

Hello Henrique,

there must be a way to do it. I already saw that it is possible. I connected R/3>XI>R/3 via RFC and the synchronous RFC calls went through Integration Engine.

Best regards,

Philipp

Former Member
0 Kudos

I think the key is a <b>program ID</b>. Have you set it up in your JCo connection?

RFC Sender adapter listen connection by this program ID.

henrique_pinto
Active Contributor
0 Kudos

Phillip,

I was confused by your question.

To be able to send a message to Integration Engine, you don't need to send a RFC (remote function call). You just send a message to IE's pipeline, for example, through address http://host:port/sap/xi/engine?type=entry.

If you are requesting a RFC, you send the message to Adapter Engine (AE) directly.

Regards,

Henrique.

philipp_wagner2
Explorer
0 Kudos

Hello Henrique,

yes, I have to admit that my question was a bit confusing.

I want to send the RFC to AE instead of ABAP stack (that's what happens at the moment). HTTP protocol is not supported by the sending system.

I assume that I have to maintain a RFC sender channel with a program ID which I have to include in my RFC call.

But how do I use this ID in my RFC call using Java JCO? If somebody could paste some sample source code, I would appreciate very much.

Best regards,

Philipp

philipp_wagner2
Explorer
0 Kudos

Hi,

this is part of my source code for the RFC call in the external program. Where do I have to maintain the program ID? The RFC call must go to Adapter Engine and not to ABAP stack (that's what it does at the moment).

Thanks a lot,

Philipp

public static boolean connectToSAP(
	String client,
	String user,
	String passwd,
	String lang,
	String appServer,
	String sysNo) {
		try {
			mConnection = JCO.createClient(client, user, passwd, 
lang, appServer, sysNo);
			mConnection.connect();
			mRepository = new JCO.Repository("hello", mConnection);
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
		return true;
}