cancel
Showing results for 
Search instead for 
Did you mean: 

ABAP Table for DynamicConfiguration details of XML message in SXMB_MONI

Former Member
0 Kudos

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?

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

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

Answers (1)

Answers (1)

Former Member
0 Kudos

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

Former Member
0 Kudos

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?

Former Member
0 Kudos

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

Former Member
0 Kudos

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


former_member184720
Active Contributor
0 Kudos

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?

Former Member
0 Kudos

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

Former Member
0 Kudos

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

former_member184720
Active Contributor
0 Kudos

Even if you have a way to read, how do you correlate the two interfaces ? inorder to retrieve the DCJMSCorreleationID  from your second interface atleast you need the message ID of your interface one right?

How do you get that? Is your proxy sending the message ID back to PI?

Former Member
0 Kudos

Yes Hareesh INT1 message ID will be send in INT2 and based on that I want to retrieve the DCJMSCorreleationID of first INT1

former_member184720
Active Contributor
0 Kudos

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

http://iais_keyf_area_con.benxbrain.com/en/sap/interface/IF_XMS_MSGHDR30_DYNAMIC-XI-Dynamic-SOAP-Hea...

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.