on 02-27-2014 9:38 AM
Dear All
I have a requirement where I have to read the value from DCJMSCorreleationID property of message which is recorded in SXMB_MONI based on the SAP PI message ID.
I have 2 interfaces as below
Interface one (INT1) : JMS-PI-ECC --->Inbound interface to ECC when message is received on PI it will have DCJMSCorreleationID populated with some ID as shown below
Go to SXMB_MONI -->Inbound Message ---> SOAP Header --->DynamicConfiguration
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<SAP:DynamicConfiguration SOAP:mustUnderstand="1" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SAP:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSCorreleationID">
a26c4276-9d5e-11e3-ba87-000004238292
</SAP:Record>
<SAP:Record namespace="http://sap.com/xi/XI/Message/30/general" name="senderAgreementGUID">dd3fb7c6b983314293e14ba59df1ad45</SAP:Record></SAP:DynamicConfiguration>
Interface Two (INT2):-ECC-PI-JMS----> Outbound from ECC where I am passing a SAP PI Message ID for INT1 in one of the field
Can I read this DCJMSCorreleationID for INT1 when INT2 is executed and have message ID for INT1 ?
Where are these SOAP hearder porperties like DCJMSCorreleationID are stored on ABAP table?
Hello All
I have found it
Solution
Use an object of the class CL_XMS_PERSIST to get the XI message Method READ_MSG_PUB
on the return object, call a method to get the dynamic configuration data GET_DYNAMIC_HEADER
It gives me DCJMSCorreleationID property
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello,
they are not stored in any ABAP table. The whole message version is stored in cluster tables. You'd have to read the whole message, parse it or search for your attribute and extract the value. You need to be careful to extract the correct message version.
In my opinion, this is not a well-designed scenario. If you have to correlate those messages, either go for BPM or correlate them on sender/receiver system.
Regards,
Jörg
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks Jörg for your reply
INT1 and INT2 are completely async scenarios and I can not use BPM here to correlate
As you are saying the Whole message is stored in cluster table do you mean that the DCJMSCorreleationID property will also be available?Table SXMSCLUP will have this information? Or
which table you mean?
Hello,
as far as I know, yes, it is there and the table is SXMSCLUP and/or SXMSCLUR. If I remember correctly, there is no officially released function module to access this data, so you do this at your own risk.
I would still recommend BPM or other places to correlate, but if you look for another solution, you could also populate a z-table on PI with message Id and correlation Id and later read that Id from your second message, both with an RFC lookup from your mapping. This is not very elegant, but probably safer than reading an attribute from cluster tables.
Regards,
Jörg
Thanks Jörg for your reply
I have a back up plan for ZTable approach but the only concern there is RFC calls for read and write
we have implemented a FM which gives the original payload using a std SAP functional modules FM SXMB_GET_XI_MESSAGE_INT and ECATT_CONV_XSTRING_TO_STRING
But I am looking for the SOAP Header information for DCJMSCorreleationID
So if there is anything which will help to read this DCJMSCorreleationID property easily form existing message SOAP header is really helpful
Hi.. Why don''t you read the dynamic attribute in your Interface 1 and send to ECC as an additional field so that your ECC can return the same when it executes INT2?
However to read the message content during your INT2, you need to have the message ID of the INT1 which agian should come from ECC
Any problem in doing that?
Reading the PI message and writing the message Id will also be some RFC calls, so I don't really see the difference. But if you store those attributes in a z-table at least you can't put any standard functionality at risk. Unless you need this field for routing I'd also suggest to make the correlation in your backend system.
Regards,
Jörg
Thanks Harish for the response and suggestion
Our interface is already Live and in order to have minimum impact on existing developments both on ECC and legacy end so we have to do some code adjustment in middleware level
So adding field on any end will have impact on ECC side
So if there is anything which will help to read this DCJMSCorreleationID property easily form existing message SOAP header is really helpful
Hi - I still feel that it would be very easy and a minimal change in ECC to handle it.
Have a look at the below interface if it helps
i'm not an ABAP expert and not sure if the above interface is useful
I don't think we have standard function modules/reports which will give us the dynamic attributes.
else you have to build another interface and store the attribute in a DB/ECC table(RFC) and fetch it using lookups.
User | Count |
---|---|
87 | |
10 | |
10 | |
10 | |
7 | |
6 | |
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.