cancel
Showing results for 
Search instead for 
Did you mean: 

SQL to BAPI Message Mapping Issue

Former Member
0 Kudos

This is my datatype for source, which refered by resultset

<?xml version="1.0" encoding="UTF-8"?>

<mt_PhysCountInfo>

<row>

<PROCESSED/>

<TRANS_ID/>

<TRANS_RFC/>

<SAPABX_STATUS/>

<SIGN/>

<OPTION1/>

<LOW/>

<HIGH/>

</row>

</mt_PhysCountInfo>

When JBDC Sender Adapter polls SQL Database, SQL select statement is written in such way that its picks data from 5 tables among them datatypes in 4 tables is same(SIGN, OPTION1, LOW, HIGH) with different values....which in turn will be mapped to 4 corresponding tables in BAPI.

Here is my souce once JDBC adapter picks from SQL tables:

<?xml version="1.0" encoding="utf-8"?>

<mt_PhysCountInfo>

<row>

<PROCESSED>N</PROCESSED>

<TRANS_ID>1847201</TRANS_ID>

<TRANS_RFC>BAPI_MATPHYSINV_GETITEMS () <b>plant_ra, stge_loc_ra, count_status_ra, phys_inv_no_ra</b>, items, headers, return</TRANS_RFC>

<SAPABX_STATUS>x</SAPABX_STATUS>

<SIGN><b>I</b></SIGN>

<OPTION1><b>EQ</b></OPTION1>

<LOW> </LOW>

<HIGH></HIGH>

<SAPABX_STATUS>x</SAPABX_STATUS>

<SIGN><b>I</b></SIGN>

<OPTION1><b>BT</b></OPTION1>

<LOW></LOW>

<HIGH><b>ZZZZZZZZZZZZZZZZ</b></HIGH>

<SAPABX_STATUS>x</SAPABX_STATUS>

<SIGN><b>I</b></SIGN>

<OPTION1><b>EQ</b></OPTION1>

<LOW><b>WOIL</b></LOW>

<HIGH></HIGH>

<SAPABX_STATUS>x</SAPABX_STATUS>

<SIGN><b>I</b></SIGN>

<OPTION1><b>BT</b></OPTION1>

<LOW> </LOW>

<HIGH><b>ZZZZ</b></HIGH>

</row>

</mt_PhysCountInfo>

This is how my target stucture looks like now. But I am not getting right mapping here. If you see values for SIGN, OPTION1, LOW and HIGH they all are same for all tables...means its mapping first set values from source to all tables in target.

<?xml version="1.0" encoding="UTF-8"?>

<ns0:BAPI_MATPHYSINV_GETITEMS xmlns:ns0="urn:sap-com:document:sap:rfc:functions">

<b><COUNT_STATUS_RA></b>

<item>

<SIGN><b>I</b></SIGN>

<OPTION><b>EQ</b></OPTION>

<LOW> </LOW>

<HIGH/>

</item>

<b></COUNT_STATUS_RA></b>

<HEADERS/>

<ITEMS/>

<b><PHYS_INV_NO_RA></b>

<item>

<SIGN><b>I</b></SIGN>

<OPTION><b>EQ</b></OPTION>

<LOW> </LOW>

<HIGH/>

</item>

<b></PHYS_INV_NO_RA></b>

<b><PLANT_RA></b>

<item>

<SIGN><b>I</b></SIGN>

<OPTION><b>EQ</b></OPTION>

<LOW> </LOW>

<HIGH/>

</item>

<b></PLANT_RA></b>

<RETURN/>

<b><STGE_LOC_RA></b>

<item>

<SIGN><b>I</b></SIGN>

<OPTION><b>EQ</b></OPTION>

<LOW> </LOW>

<HIGH/>

</item>

<b></STGE_LOC_RA></b>

</ns0:BAPI_MATPHYSINV_GETITEMS>

But target should look like this after mapping:

<?xml version="1.0" encoding="UTF-8"?>

<ns0:BAPI_MATPHYSINV_GETITEMS xmlns:ns0="urn:sap-com:document:sap:rfc:functions">

<b><COUNT_STATUS_RA></b>

<item>

<SIGN><b>I</b></SIGN>

<OPTION><b>EQ</b></OPTION>

<LOW> <b>WOIL</b></LOW>

<HIGH/>

</item>

<b></COUNT_STATUS_RA></b>

<HEADERS/>

<ITEMS/>

<b><PHYS_INV_NO_RA></b>

<item>

<SIGN><b>I</b></SIGN>

<OPTION><b>BT</b></OPTION>

<LOW> </LOW>

<HIGH><b>ZZZZ</b></HIGH>

</item>

<b></PHYS_INV_NO_RA></b>

<b><PLANT_RA></b>

<item>

<SIGN><b>I</b></SIGN>

<OPTION><b>EQ</b></OPTION>

<LOW> </LOW>

<HIGH/>

</item>

<b></PLANT_RA></b>

<RETURN/>

<b><STGE_LOC_RA></b>

<item>

<SIGN><b>I</b></SIGN>

<OPTION><b>BT</b></OPTION>

<LOW> </LOW>

<HIGH><b>ZZZZZZZZZZZZZZZZ</b></HIGH>

</item>

<b></STGE_LOC_RA></b>

</ns0:BAPI_MATPHYSINV_GETITEMS>

Can I achieve this by using Message Mapping??? or If I have to do with XSLT or JAVA can anybody provide me code.

Thank You

Indrasena

Accepted Solutions (0)

Answers (1)

Answers (1)

MichalKrawczyk
Active Contributor
0 Kudos

Hi,

>>>Can I achieve this by using Message Mapping???

it depends:)

do you always get 4 values (one for each target table?)

if so then you create a few user advanced functions

that will return values in direct order:

first function:

result.addValue(a[0]);

sencond one:

result.addValue(a[1]);

and so on

then you can use those functions

to map values to different tables

if you have more then you can do some if conditions

in the user advanced function

Regards,

michal