on 03-24-2014 7:04 AM
Hi gurus,
I have a scenario where i have important fields like thew user id / Business transaction id etc as part of SOAP header coming from the sending application.this is for End to End tracking where the client would like to check in PI for that business transaction id , how many messages were processed.
how can i achieve this? As always, your help is highly required.
S
Hi All,
Thanks for the response.My requirement is when the Business transaction id comes through from source and i might not have any way to map it to the target.
In such a case the Bus Transaction id will be stalled in PI , but need to to be used for tracking.
Your inputs please.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
You need to run in noSOAP mode, this can be achieve by checking "Do Not Use SOAP Envelope" in your sender CC and appending &nosoap=true at the the end of the sender URL.
The addition of the SOAP Envelope means you would need Java/XSLT mapping to extract the information needed.
Regards,
Mark
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi
You have to check the option 'keep header' in sender soap adapter. Then you can write an UDF which will do the follwing
1. read the business transaction id from header.
2. store the business transaction id and corresponding message id in a table in ECC.
In the ecc side you can write an program which will take the business transaction id as input and return the number of messages processed in PI for that transaction in ID.
There is one more option
1. You have to include the transaction id in the target structure and map the same with the header value using dynamic configuration in UDF.
then you can configure a user defined search for that transaction id field by which you will be able to find how many messages were processed for a transaction id in sap PI.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
1. You have to include the transaction id in the target structure and map the same with the header value using dynamic configuration in UDF.
then you can configure a user defined search for that transaction id field by which you will be able to find how many messages were processed for a transaction id in sap PI.
Can you please explain how can this be done, I mean using a Dynamic config and the logic behind this?Maybe i can convince for a field to be passed back to ECC.
S
Hi
You can access the header information in the below way
1. Check the option keep header in sender soap communication channel. You have to select the adapter specific attribute and provide the name of the header field in the variable header name field.
Then you can access the value of this field using the below code in UDF
DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey key1 = DynamicConfigurationKey.create( "http://sap.com/xi/XI/System/SOAP", "XHeaderName1");
String value = conf.get(key1);
return value ;
Once you have the transaction id in your structure, you can configure the user defined search in the below way
Hi Shyamsundar,
A first look, i think in a RFC/JDBC lookup at message mapping level, there you could update an external table with the information. I dont like so much this option because you can notice lower performance, but it's one start
Regards.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
93 | |
10 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.