cancel
Showing results for 
Search instead for 
Did you mean: 

Need to Map Request and Response Values Together

Former Member
0 Kudos

I am using PI 7.0. My scenario is ABAP Proxy -> PI -> JDBC (all synchronous).

I need to be able to map some of my request values back to SAP with the rest of the JDBC response. Since Global Container does not work across maps and Dynamic Configuration does not appy to JDBC, it seems like I have to use BPM to get this working. In fact, I have developed a similar scenario in the past but it was synchrous and the request/response "double-map" was for another receiver (asychronous).

In this scenario I cannot figure out where the "double-map" map belongs within the synchonous chain. Can anyone help or point me to a blog (that I have yet to find)?

Thanks,

Keith

Accepted Solutions (1)

Accepted Solutions (1)

former_member200962
Active Contributor
0 Kudos

Can you tell me what a Double-Map means....never heard of this term....and as far as your requirement is concerned, yes you have to use a BPM.

Former Member
0 Kudos

That was my own term. I mean a map with two source messages.

I have not figured out how to get both sources in at the response mapping.

former_member200962
Active Contributor
0 Kudos

BPM is the only way to do this requirement. N:1 integration (mapping) cannot be done without a BPM

Regards,

Abhishek.

Former Member
0 Kudos

Will I need to have a transformation step in the BPM to get it to work? If so, where does it reside in relation to RECEIVE/SEND steps?

former_member200962
Active Contributor
0 Kudos

You will receive a message...then send it ot target to get back response....then map this response with original message and then send it to original sender....is the flow correct? If yes, then below is the BPM design for it:

Receive --> Transformation1 --> SendSYNC --> Transformation2 --> Send.

transformation1 can be placed ouside the BPM...in Interface Determination.

Transformation2 will be in the BPM and will be a 2:1 mapping...two source messages..Original request Message and Response Message....target will have the format as expected by the original sender.

Regards,

Abhishek.

Former Member
0 Kudos

What about the modes? On the Receive step, I assume I need to have "start process" checked but then the mode choices are either 'Async' or 'SyncAsyncBridge'. I have doubts as there is no async piece in this scenario. The process starts with a synchronous proxy call from ECC and then has a synchronous call to the database.

former_member200962
Active Contributor
0 Kudos
The process starts with a synchronous proxy call from ECC and then has a synchronous call to the database.

Any restriction to have both as SYNC.....in such a case no mode option can be applied....not ASYNC nor Sync-Async Bridge...at least change the PROXY mode to ASYNC.

justin_santhanam
Active Contributor
0 Kudos

Keith,

Your scenario has to be in the below flow.


Receive (Open Synch/Asynch Bridge) --> Transformation 1---> Synchronous Send ---> Transformation 2 --> Asynchronous Send(Closes Synch/Asynch Bridge)

If you have any questions in the above flow, let us know.

raj.

Former Member
0 Kudos

Spent some time on this yesterday evening, but still have a disconnect somewhere.

When I do configuration and then run a test, the BPM seems to be trying to respond to ECC prior to actually performing its own steps.

I know it is not easy to follow information presented like this, but if you notice anything...it seems like I have a sync or async interface that may need flipping.

Message Types:

ECCRequest

ECCResponse

DatabaseRequest

DatabaseRequest_response

I need the ECCRequest to map to the DatabaseRequest. Then a synchronous call to the database and get the response. Then map the DatabaseRequest and DatabaseResponse to ECCResponse. Finally send the ECCResponse back to ECC system (synchronous connection still open from original start).

BPM Receive1

Message: Container_Abstract_Async_DatabaseRequest

Start Process: Checked

Mode: Open S/A Bridge (I don't understand where Async part comes in.)

Sync Interface: Abstract_Sync_DatabaseCall (OutputMsg=DatabaseRequest, InputMsg=DatabaseRequest_response)

SendDBCall

Mode: Sync

Sync Interface: Abstract_Sync_DatabaseCall

Request Msg: Container_Abstract_Async_DatabaseRequest

Response Msg: Container_Abstract_Async_DatabaseResponse

Receiver From: Send Context

Transformation

Interface Mapping: Request_and_Response_to_AbstractAsyncECCResponse

Source Messages: Container_Abstract_Async_DatabaseRequest and Container_Abstract_Async_DatabaseResponse

Target Message: AbstractAsyncECCResponse

SendResponse

Mode: Closes S/A Bridge

Message: ??? (figured it would be Container_Abstract_Async_ECC_Response, but this errors...used Container_Abstract_Async_DatabaseResponse, since it activates, to test)

Opened By: Receive1

Former Member
0 Kudos

Raj,

I am talking to the ABAP team as Stefan recommended, but I would still like to get this BPM figured out.

I followed your flow, but am having problems figuring out the Message Interfaces at the beginning of the flow. I have 4 messages (ECCRequest, ECCResponse, DBRequest, DBResponse).

What type of message interface do I need to be using at the Receive step? I think it needs to be synchronous to start the S/A Bridge, but it has to be abstract. But then what messages?

I have tried numerous combinations, but to no avail.

Thanks,

Keith

justin_santhanam
Active Contributor
0 Kudos

Hi Keith,

Currently working on production issue, will get back to you on this shortly. I'm pretty sure we can do it as the way I proposed.

Thanks!

stefan_grube
Active Contributor
0 Kudos

> What type of message interface do I need to be using at the Receive step? I think it needs to be synchronous to start the S/A Bridge, but it has to be abstract. But then what messages?

> I have tried numerous combinations, but to no avail.

for a sync call you need three interfaces. One abstract sync and two abstract async for request and response each.

the async interfaces are used to define the container elements.

Former Member
0 Kudos

My big issue was with getting the outbound sync interface into the BPM. Per Raj, I had to do a mapping from an outbound sync interface to an identicle abstract sync interface upon entering BPM.

Thanks everyone!

Answers (1)

Answers (1)

stefan_grube
Active Contributor
0 Kudos

> I am using PI 7.0. My scenario is ABAP Proxy -> PI -> JDBC (all synchronous).

>

> I need to be able to map some of my request values back to SAP with the rest of the JDBC response.

Wha you need this? You can combine the data inside the ABAP program which calls the Proxy.

Former Member
0 Kudos

Stefan,

That is how I received the requirements, but I will attempt to negotiate this suggestion with the ABAP team.

Still, is this possible in BPM? I was going to be adding a BPM block with timeout anyway.

stefan_grube
Active Contributor
0 Kudos

> That is how I received the requirements,

I hear that a lot

> but I will attempt to negotiate this suggestion with the ABAP team.

Ask them, why they want the ABAP code to receive data, which it has already in memory.

> Still, is this possible in BPM?

Yes, very easiy: just do as you described by yourself.

> I was going to be adding a BPM block with timeout anyway.

If you do not use the multimapping, this is a waste of system ressources.

The ABAP program has to do some error handling anyway in a sync scenario.

BPM is difficult to develop, error prone, hard to monitor and ressource intensive.

Before you use BPM, think about alternatives.