cancel
Showing results for 
Search instead for 
Did you mean: 

Database Tables

Former Member
0 Kudos

What are all the Tables XI uses to maintain the Payload and the other Metadata

For example

payload as well as size of the same..SXMSCLUP ( Field CLUSTR holds size and MSGGUID actual payload...

Accepted Solutions (0)

Answers (6)

Answers (6)

Former Member
0 Kudos

here is an example of how to read the message payload...

I will first get an XML document, and then ask for a path inside this xml.

ls_msgtab-msgguid is the message ID,

ls_msgtab-pid is the pipeline ID.

DATA: ls_msgtab TYPE sxmsmsgdsp,

lv_guid TYPE sxmsmguid.

DATA: li_ifmsg TYPE REF TO if_xms_message,

li_msg TYPE REF TO if_xms_message_xmb,

li_pay TYPE REF TO if_xms_payload,

lv_payxstr TYPE xstring.

DATA: ixmlfactory TYPE REF TO if_ixml,

iparser TYPE REF TO if_ixml_parser,

streamfactory TYPE REF TO if_ixml_stream_factory,

istream TYPE REF TO if_ixml_istream,

idocument TYPE REF TO if_ixml_document,

lv_xpath TYPE string,

root TYPE REF TO if_ixml_element,

el TYPE REF TO if_ixml_element,

vl TYPE string.

TYPE-POOLS: ixml.

CLASS cl_ixml DEFINITION LOAD.

ixmlfactory = cl_ixml=>create( ).

streamfactory = ixmlfactory->create_stream_factory( ).

CALL METHOD persist->read_msg_pub

EXPORTING

im_msgguid = ls_msgtab-msgguid

im_pid = ls_msgtab-pid

im_version = 000 " we take the first version

IMPORTING

ex_message = li_ifmsg.

li_msg ?= li_ifmsg.

li_pay = li_msg->get_payload_with_main_document( ).

if not li_pay is BOUND.

      • you need to handle this situation...

endif.

lv_payxstr = li_pay->getbinarycontent( ).

  • Create DOM

istream = streamfactory->create_istream_xstring( lv_payxstr ).

idocument = ixmlfactory->create_document( ).

iparser = ixmlfactory->create_parser(

stream_factory = streamfactory

istream = istream

document = idocument ).

iparser->parse( ).

  • Search for xpath / value

lv_xpath = xpath.

root = idocument->get_root_element( ).

el = root->find_from_path( path = lv_xpath ).

Former Member
0 Kudos

Hi

Master tables are SXMSPMAST

and the cluster tables are SXMSCLUP,SXMSCLUR

Thanks

Former Member
0 Kudos

Hi guys, i still dont get it how can i read the payload from table SXMSCLUP,SXMSCLUR.

I read from some thread that we have to use ABAP class to do this...Anyone know how?

Former Member
0 Kudos

Hi Jenni

<b>The most important tables are:</b>

<b>SXMSPMAST, SXMSCLUR, SXMSPFRAWH and SXMSPFRAWD:</b> These tables are cleaned up by archiving and deletion of xml messages.

others are

<b>XI_AF_MSG and XI_AF_MSG_AUDIT</b>

<b>tables where the actual message is stored in XI</b>

/people/sravya.talanki2/blog/2007/01/11/ripping-off-sap-xi-stack-133sharing-the-goodies-of-abap-api146s

/people/sravya.talanki2/blog/2005/12/02/sxicache--ripped-off

/people/sravya.talanki2/blog/2006/12/28/skelton-of-mapping-runtime-in-sap-xi

Thanks!!

nisarkhan_n
Active Contributor
0 Kudos

have a look at tables:

SXMSPMAST, SXMSCLUP, SXMSPCLUR the last two are cluster tables

and you won't get XML messages directly from them have a look inside them

those tables (SXMSCLUP,SXMSCLUR) have a blob field (the last filed)

that contains the playload.

Normally you will not see them at se16, you may increase the row length from the default of 200 to 1023, to see the contant of those fileds.

Former Member
0 Kudos

Jenni,

I dont know much aboutthe function of different tables in XI.

have a look at these threads...

SXMSPMAST,

SXMSCLUP, SXMSPCLUR--cluster table!!!

/SAPDMC/LSOMAP Field Mapping

/SAPTRX/SCAOTMAP

/SAPTRX/SCCNDMAP /SAPTRX/SCEVTMAP

/SAPTRX/SCFUNMAP /SAPTRX/SCSOMAP

/people/udo.martens/blog/2006/02/16/own-logging-of-xi-messages

regards

biplab

prateek
Active Contributor
0 Kudos

Master table SXMSPMAST

And the cluster tables SXMSCLUP,SXMSCLUR

Also see this

http://help.sap.com/saphelp_nw2004s/helpdata/en/f5/d347ddec72274ca2abb0d7682c800b/frameset.htm

Regards,

Prateek