cancel
Showing results for 
Search instead for 
Did you mean: 

ABAP Proxy-Sync. to PI and response back without a third system

0 Kudos

Hello,

I want to use a synchronous abap-proxy to send some data to pi and want pi to convert the data to xml format and response back to calling system which is ECC.

1-ECC---ABAP-Proxy-sync--request----> PI

2-PI does the operation mapping

3-PI sends back the output of operation mapping.

There is no other system other that ECC and PI.

I defined those objects : data type, message type, sync. outbound/inbound service interfaces , operation mapping and java mapping (imported archive).

I got back to ECC and generated the outbound-services interface's proxy class. I couldnt manage to configure this scenario. Actually I want to run a converter java mapping in PI and dont want to call any other system via PI, but just PI itself. ECC sends some data to PI and PI does the java mapping and sends the converted data back to ECC.

How can I run PI in such a loop-back scenario? I always used to run PI in the middle of at least 2 systems like  :

A---> PI --->B  (request)

A<--- PI <---B  (response)

But now, I have to do :

A---> PI (request)

A<--- PI (response)

Best Regards

Accepted Solutions (0)

Answers (4)

Answers (4)

Muniyappan
Active Contributor
0 Kudos

create normal synchronous scenario.

Sender and receiver should be ECC.  ECC-->PI-->ECC

Generate proxy for inbound and outbound interfaces.

Any issue in doing that?

0 Kudos

Hello,

ECC is the same ECC system. So do you suggest like this :

1-ECC sends the data via abap proxy to PI

2-PI converts the data

3-PI sends the output to the same ECC via rfc

4-ECC sends back the same payload (dummy RFC function that outputs its input) to PI

5-PI gets back the response of this

6-PI sends back the echo message to the same ECC as a response.

Because it is a synchronous process, it must be like this. In the 3rd step we dont send the converted data to as a response to the caller but to a new endpoint.

former_member186851
Active Contributor
0 Kudos

Hello Kerem,

Is there a possibility to change the proxy to Async and update the second proxy with the Converted XML.This could be better and simple I believe.

0 Kudos

Hello,

Sorry, I couldnt understand thoroughly.

In ECC, there is a running ABAP program. At a certain point it has the binary pdf data to be converted. It then calls the sync. proxy method and waits for the response. Without getting the response from the proxy interface till the timeout, ECC abap program must not go on.

If I use the async. proxy interface it will not wait for the response and actually there is no response.

BR

Muniyappan
Active Contributor
0 Kudos

Let us assume you have 10 pdfs to be converted.

ECC outbound proxy will get triggered for first pdf, request sent to PI, java codes executes, and converted request sent to ECC inbound proxy. simply take the incoming request(no logic in inbound proxy) and pass it to response structure from inbound proxy. finally outbound proxy receives the converted file. once this call completes, subsequent call be initiated for remaining pdfs.

0 Kudos

Hello,

This is possible but so many unnecessary rings in the communication chain. In order to have e returning response we need to do dummy call to ECC or anywhere else to set the context to the response action. The first sync. abap outbound request message should be stopped in PI after the operation mapping and the response action should start. I guess I have to work on echo-loopback receiver comm. channel.

thanks yet.

Muniyappan
Active Contributor
0 Kudos

All i understand is you will send PDF to pi to convert and get xml. This is clear.

How the whole execution starts? from where are you reading the pdf in ECC? are you reading the pdf from app server? where the pdf is stored?

can you tell me what is the next step, once xml is received in ECC?

for example, if you are going to store the response xml in table, you can do it using async interface. so you can avoid response. Please note, if 10 pdfs files are there in ECC, write the proxy code to call interface 10 times in this case.

MartinB2
Explorer
0 Kudos

Hello Kerem,

i'm working here on a scenario that looks pretty much the same as your Scenario.

A syn. sender calling PI. PI just has to return the message somehow via e.g. Echo Channel/Modul?
Did you solved the issue? How does your solution look like?

regards

Martin

0 Kudos

There must be a simple way to implement a loop-back or an echo after running the operation mapping, but I couldnt find a way.

bhavesh_kantilal
Active Contributor
0 Kudos

Here is what I would do,

- Use a Sync-Async Bridge in PI using the method described in this blog - http://scn.sap.com/blogs/henrique/2007/08/02/syncasync-scenarios-without-bpm

- Basically write the output of your mapping to a File using the File Receiver Adapter with MessageID as file name

- Read the same file with a Sender File adapter, set the correlation, as described in this blog and this will push the response back to ECC.

- Obviously the response time will depend on the sender file adapter's polling interval.

Regards,

Bhavesh

0 Kudos

Hello Bhavesh,

Actually I had thought about this. I feel that the performance would be worse than the ccBPM case.

And I have to add a new ring in the communication process chain.

I think I had to work on an echo/loopback receiver communication channel.

If you dont suggest me any other standard ways ?

thanks a lot.

BR

bhavesh_kantilal
Active Contributor
0 Kudos

2 other alternates I can think of,

1 - Write a Server Proxy in ECC that basically does nothing but returns whatever PI sends back. This then becomes a Poxy - PI - Proxy Interface.

2. Write a Java Proxy in PI that acts as your Echo Service.

There is no standard SAP PI loopback / echo service.

Regards

Bhavesh

0 Kudos

Thank you for your interest.

However, I couldnt understand your new solutions. could you give me more details, steps?

bhavesh_kantilal
Active Contributor
0 Kudos

So this is what I mean,

  • On your Receiver Side, create a Inbound Synchrnous Service Interface that has the output of your mapping as the request and response structure
  • Generate a ABAP Server Proxy for this.
  • In the implementation of this ABAP Server proxy return the request as-is as the response.

Overall your scenario will become ECC --> ABAP Proxy ( Client ) --> PI ---> ABAP Proxy (Server) --> ECC

Regards

Bhavesh

former_member190293
Active Contributor
0 Kudos

Hi Kerem!

Maybe I didn't catch the mean of your question, but in described scenario you just use the same business system both as sender and receiver with according interfaces.

In your scenario you can use asynchronous connection

Business System A (Async outbound interface) -> PI -> Bysiness System A (Async Inbound interface).

In sync scheme you just send response from System A to itself.

Regards, Evgeniy.

0 Kudos

Hello,

The point is there is an ABAP program in ECC. At a certain point, this program needs to convert binary pdf data to xml. I designed a java mapping in PI. It gets the binary pdf and outputs xml. I put this java mapping in an operation mapping. I just want to call sync.proxy method in the abap program of ECC to send pdf binary data to PI and get back the result xml immediately. I have to use synchronous abap proxy.

If I add the same system in the receiver agreement, then it is useless.

it seems like this:

A--> PI --> A

A<--- PI <--A

Also I will have to desgin some dummy RFC function in ECC for the receiver agr.part.

BR

former_member190293
Active Contributor
0 Kudos

Ok, then you can use Integration process object in PI which will receive your message on synchronous interface, do the transformation and close the interface with the response message to sender.

Regards, Evgeniy.

0 Kudos

Hello Evgeniy,

I dont want to use ccBPM in this case. There are 2 reasons for that :

1-considering the performance ccBPM is not so good.

2-we use PI 7.11 abap+java. In the future, we are planning to upgrade to a single-java stack PO 7.4. During the upgrade I will have to re-design this scenario because in single-java stack PO it will not work. ccBPM works in the ABAP side.

I investigated the "Direct Connection" methodoly for such a P-to-P communication (ECC to PI only). However, this method is not going to work because it doestn use Integration Server of PI. Because I have to run an operation mapping (OM) and OM runs only in integration server, I cant use Direct Connection methodology.

Best Regards

former_member186851
Active Contributor
0 Kudos

Hello Kerem,

What type of conversion are being done @ PI?

You can do the same @ ECC right?

0 Kudos

Hello Raghuraman,

It is a pdf to xml conversion. I designed the java mapping to do this. It cant be done in ECC in ABAP. It is not generated by ADS. So I had to use itext library to handle pdf2xml conversion.

I just want to send pdf data to pi operation mapping and get back the result xml. There is no other system other than one ECC and one PI. PI must get binary data from the sync.abap proxy called by ECC and run the operation mapping and result payload must be send back to ECC.

BR