cancel
Showing results for 
Search instead for 
Did you mean: 

PI Global Variables

Former Member
0 Kudos

I have been looking for ways to support global variables (across maps, not within a single map) and cannot find anything.

My scenario is a synchronous RFC out of R3, through PI, and out to a vendor's product lookup service...all synchronous. The issue is that I need to log values from the RFC request as well as values from the vendor response.

I can get the process working with a sync/async bridge in a BPM (the async part being to write out vendor response to the log file). What I need is some way to store RFC request values and map them into my log file too.

Unless there is some Global variable method that spans across an entire process, I figure I need to do something special in the BPM. Can I achieve this by creating a split/copy of my request message, sending one out to the vendor and holding the other in a BPM wait of some sort. Then when the response comes back, split/copy it also and let one copy respond to SAP and the other merge up with the waiting request? Or something like this?

Thanks for any suggestions.

Keith

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Keith,

and something like that inside your BPM is not a solution ?

             
(1)  -------------- (2)= ------------- (3)-------- (4)


(1) your BPM receiver the RFC Request
(2) your synchronous request/response to vendor
(3) a mapping with two inbound :
          - your RFC request
          - your Vendor response.
     and a one outbound (your merge message)
(4) You send your merge message

 

Mickael

Edited by: Mickael Huchet on Apr 22, 2008 6:48 PM

Former Member
0 Kudos

Mickael,

Does your recommendation take into account my synchronous reply to the RFC R/3 initiator? Do you propose needing a Sync/Async bridge?

Thanks!

Keith

Former Member
0 Kudos

Hi,

your requirement require BPM and also Sync/Async bridge.

Please reward points if it helps

Thanks

Vikranth

Answers (2)

Answers (2)

ravi_raman2
Active Contributor
0 Kudos

Keith..

Can you try creating your own global variables and adding them to the global container..then you can try and retrieve them in the runtime and write those with values to a log.......theoritically this sounds probable........and practically it might just work.....!!

http://help.sap.com/javadocs/pi/SP3/xpi/com/sap/aii/mappingtool/tf7/rt/GlobalContainer.html

Regards

Ravi Raman

Former Member
0 Kudos

Hi Keith,

I think you can achieve your requirement using a combination of Lookup & BPM (Sync Async bridge) techniques. May be you can try the following;

Integration process design:


START
^^
ReceiveStep(Open SyncAsyncBridge) 
^^
Transformation (MultiMapping with lookup)
^^
SendStep(Send RFC Resp &Close SyncAsyncBridge)
^^
SendStep(Send Log message)
^^
STOP

Details:

Step1: Use Receive step to receive the sync RFC message and ope n S/A bridge.

Step2: In Mapping (Transformation step) use Mapping lookups (RFC/DB/SOAP) to get the Vendor response and in same mapping generate both the Log message and RFC response as output messages (Multi-Mapping)

Step3:Send RFC Response message and close S/A bridge

Step4:Send Log message

Hope this helps.

Regards,

Ananth