cancel
Showing results for 
Search instead for 
Did you mean: 

JDBC mapping to IDOC issue

Former Member
0 Kudos

We are retrieving information from our SQL server and trying to map it to the picking IDOC SDPIID01. We are having a problem in trying to get the correct mapping to occur. The result list is as follows:

<mt_SQLPickConfirmation>

<row>

<Processed />

<Trans_ID />

<Trans_IDOC />

<VBELN_VL />

<VBELN />

<TANUM />

<KODAT />

<KOMUE />

<WADAT_IST />

<POSNR_VL />

<POSNN />

<PIKMG />

<NDIFM />

<CHARG />

<MATNR />

<ORPOS />

</row>

</mt_SQLPickConfirmation>

and the IDOC is as follows:

<SDPIID01>

<IDOC BEGIN="">

<E1VPDLH SEGMENT="">

<VBELN_VL />

<VBELN />

<TANUM />

<KODAT />

<KOMUE />

<WADAT_IST />

<E1VPDLI SEGMENT="">

<VBELN_VL />

<POSNR_VL />

<VBELN />

<POSNN />

<PIKMG />

<NDIFM />

<CHARG />

<MATNR />

<ORPOS />

</E1VPDLI>

</E1VPDLH>

</IDOC>

</SDPIID01>

Now some of the information goes into the segment E1VPDLH and some of the information goes into the segment E1VPDLI. The problem is trying to create a new IDOC everytime the field TRANS_ID changes.

We have tried to manipulate the context but still have problems with the output. The data can contain many rows with the same TRANS_ID number. Every time the TRANS_ID number changes we need a new IDOC created. All of my trys have failed. I either get one IDOC with a header segment and all the line items segments for each row or I get multiple IDOCS that do not contain the correct line item information.

Any help is appreciated. Attached is a sample of the data.

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

<mt_SQLPickConfirmation>

<row>

<PROCESSED>N</PROCESSED>

<TRANS_ID>1</TRANS_ID>

<TRANS_IDOC>SDPIID01</TRANS_IDOC>

<VBELN_VL>0080593473</VBELN_VL>

<VBELN>0000208489</VBELN>

<TANUM>0000208489</TANUM>

<KODAT>20051219</KODAT>

<KOMUE>X</KOMUE>

<WADAT_IST>20051219</WADAT_IST>

<POSNR_VL>000001</POSNR_VL>

<POSNN>900002</POSNN>

<PIKMG>240</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>DN07212</MATNR>

<ORPOS>000001</ORPOS>

</row>

<row>

<PROCESSED>N</PROCESSED>

<TRANS_ID>2</TRANS_ID>

<TRANS_IDOC>SDPIID01</TRANS_IDOC>

<VBELN_VL>0080593503</VBELN_VL>

<VBELN>0000208530</VBELN>

<TANUM>0000208530</TANUM>

<KODAT>20051219</KODAT>

<KOMUE>X</KOMUE>

<WADAT_IST>20051219</WADAT_IST>

<POSNR_VL>000001</POSNR_VL>

<POSNN>900002</POSNN>

<PIKMG>30</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>DM19200</MATNR>

<ORPOS>000001</ORPOS>

</row>

<row>

<PROCESSED>N</PROCESSED>

<TRANS_ID>3573932</TRANS_ID>

<TRANS_IDOC>2</TRANS_IDOC>

<VBELN_VL>0080593503</VBELN_VL>

<VBELN>0000208530</VBELN>

<TANUM>0000208530</TANUM>

<KODAT>20051219</KODAT>

<KOMUE>X</KOMUE>

<WADAT_IST>20051219</WADAT_IST>

<POSNR_VL>000002</POSNR_VL>

<POSNN>900003</POSNN>

<PIKMG>630</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>DR19460</MATNR>

<ORPOS>000002</ORPOS>

</row>

<row>

<PROCESSED>N</PROCESSED>

<TRANS_ID>2</TRANS_ID>

<TRANS_IDOC>SDPIID01</TRANS_IDOC>

<VBELN_VL>0080593503</VBELN_VL>

<VBELN>0000208530</VBELN>

<TANUM>0000208530</TANUM>

<KODAT>20051219</KODAT>

<KOMUE>X</KOMUE>

<WADAT_IST>20051219</WADAT_IST>

<POSNR_VL>000003</POSNR_VL>

<POSNN>900004</POSNN>

<PIKMG>900</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>DN07216</MATNR>

<ORPOS>000003</ORPOS>

</row>

<row>

<PROCESSED>N</PROCESSED>

<TRANS_ID>3</TRANS_ID>

<TRANS_IDOC>SDPIID01</TRANS_IDOC>

<VBELN_VL>0080593504</VBELN_VL>

<VBELN>0000208531</VBELN>

<TANUM>0000208531</TANUM>

<KODAT>20051219</KODAT>

<KOMUE>X</KOMUE>

<WADAT_IST>20051219</WADAT_IST>

<POSNR_VL>000001</POSNR_VL>

<POSNN>900002</POSNN>

<PIKMG>450</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>D903116</MATNR>

<ORPOS>000001</ORPOS>

</row>

<row>

<PROCESSED>N</PROCESSED>

<TRANS_ID>3</TRANS_ID>

<TRANS_IDOC>SDPIID01</TRANS_IDOC>

<VBELN_VL>0080593504</VBELN_VL>

<VBELN>0000208531</VBELN>

<TANUM>0000208531</TANUM>

<KODAT>20051219</KODAT>

<KOMUE>X</KOMUE>

<WADAT_IST>20051219</WADAT_IST>

<POSNR_VL>000002</POSNR_VL>

<POSNN>900003</POSNN>

<PIKMG>150</PIKMG>

<NDIFM>-100</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>DY17820</MATNR>

<ORPOS>000002</ORPOS>

</row>

<row>

<PROCESSED>N</PROCESSED>

<TRANS_ID>3</TRANS_ID>

<TRANS_IDOC>SDPIID01</TRANS_IDOC>

<VBELN_VL>0080593504</VBELN_VL>

<VBELN>0000208531</VBELN>

<TANUM>0000208531</TANUM>

<KODAT>20051219</KODAT>

<KOMUE>X</KOMUE>

<WADAT_IST>20051219</WADAT_IST>

<POSNR_VL>000003</POSNR_VL>

<POSNN>900004</POSNN>

<PIKMG>400</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>D109050</MATNR>

<ORPOS>000003</ORPOS>

</row>

</mt_SQLPickConfirmation>

This should contain three IDOCS That look like this.

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

<SDPIID01>

<IDOC BEGIN="">

<E1VPDLH SEGMENT="">

<VBELN_VL>0080593473</VBELN_VL>

<VBELN>0000208489</VBELN>

<TANUM>0000208489</TANUM>

<KODAT>20051219</KODAT>

<KOMUE>X</KOMUE>

<WADAT_IST>20051219</WADAT_IST>

<E1VPDLI SEGMENT="">

<VBELN_VL>0080593473</VBELN_VL>

<POSNR_VL>000001</POSNR_VL>

<VBELN>0000208489</VBELN>

<POSNN>900002</POSNN>

<PIKMG>240</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>DN07212</MATNR>

<ORPOS>000001</ORPOS>

</E1VPDLI>

</E1VPDLH>

</IDOC>

<IDOC BEGIN="">

<E1VPDLH SEGMENT="">

<VBELN_VL>0080593503</VBELN_VL>

<VBELN>0000208489</VBELN>

<TANUM>0000208489</TANUM>

<KODAT>20051219</KODAT>

<KOMUE>X</KOMUE>

<WADAT_IST>20051219</WADAT_IST>

<E1VPDLI SEGMENT="">

<VBELN_VL>0080593503</VBELN_VL>

<POSNR_VL>000001</POSNR_VL>

<VBELN>0000208530</VBELN>

<POSNN>900002</POSNN>

<PIKMG>30</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>DM19200</MATNR>

<ORPOS>000001</ORPOS>

</E1VPDLI>

<E1VPDLI SEGMENT="">

<VBELN_VL>0080593503</VBELN_VL>

<POSNR_VL>000002</POSNR_VL>

<VBELN>0000208530</VBELN>

<POSNN>900003</POSNN>

<PIKMG>630</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>DR19460</MATNR>

<ORPOS>000002</ORPOS>

</E1VPDLI>

<E1VPDLI SEGMENT="">

<VBELN_VL>0080593503</VBELN_VL>

<POSNR_VL>000003</POSNR_VL>

<VBELN>0000208530</VBELN>

<POSNN>900004</POSNN>

<PIKMG>900</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>DN07216</MATNR>

<ORPOS>000003</ORPOS>

</E1VPDLI>

</E1VPDLH>

</IDOC>

<IDOC BEGIN="">

<E1VPDLH SEGMENT="">

<VBELN_VL>0080593504</VBELN_VL>

<VBELN>0000208489</VBELN>

<TANUM>0000208489</TANUM>

<KODAT>20051219</KODAT>

<KOMUE>X</KOMUE>

<WADAT_IST>20051219</WADAT_IST>

<E1VPDLI SEGMENT="">

<E1VPDLI SEGMENT="">

<VBELN_VL>0080593504</VBELN_VL>

<POSNR_VL>000001</POSNR_VL>

<VBELN>0000208531</VBELN>

<POSNN>900002</POSNN>

<PIKMG>450</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>D903116</MATNR>

<ORPOS>000001</ORPOS>

</E1VPDLI>

<E1VPDLI SEGMENT="">

<VBELN_VL>0080593504</VBELN_VL>

<POSNR_VL>000002</POSNR_VL>

<VBELN>0000208531</VBELN>

<POSNN>900003</POSNN>

<PIKMG>150</PIKMG>

<NDIFM>-100</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>DY17820</MATNR>

<ORPOS>000002</ORPOS>

</E1VPDLI>

<E1VPDLI SEGMENT="">

<VBELN_VL>0080593504</VBELN_VL>

<POSNR_VL>000003</POSNR_VL>

<VBELN>0000208531</VBELN>

<POSNN>900004</POSNN>

<PIKMG>400</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>D109050</MATNR>

<ORPOS>000003</ORPOS>

</E1VPDLI>

</E1VPDLH>

</IDOC>

</SDPIID01>

Any ideas how to achieve this?

Thanks,

Jim

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Stefan,

We are currently on SP12. Is there some advanced user function that would simplify this process?

Thanks,

Jim

stefan_grube
Active Contributor
0 Kudos

Hi Jim,

If you want to use formatByExample as user defined function, you can use following code:


     for (int j=0,k=0;j<a.length&&k<b.length;k++){
        if (b[k].equals(ResultList.CC))
            result.addContextChange();
        else{
            while (a[j].equals(ResultList.CC) && j<a.length){
                j++;
            }
        result.addValue(a[j]);
        j++;
        }  
    }

I am not sure, if it is the exact code, but for your scenario it should work.

When you define the advanced funtion, check the flag 'cache whole queue'.

When you use this function, you can replace it with the standard function after patching.

Instead of <i>index</i> use <i>counter</i>, that should work as well.

Let me know, if it works for you.

Regards

Stefan

Former Member
0 Kudos

Hi Stefan,

I did above mentioned mapping using formatByExample(as User-Defined function), its working partially.

But its not generating as many IDocs as VBELN_VL values.

So I changed IDOC node mapping as:

VBELN_VL - removeContexts - splitByValue(ValueChanged) - collapseContexts - exists - creatIf - IDOC. and

VBELN_VL - removeContexts - splitByValue(ValueChanged) - E1VPDLH.

Now its just generating IDOC(2nd IDOC for change in VBELN_VL value) with header segment E1VPDLH not header segment fileds and no line item segments E1VPDLI.

Do you have any idea what else we can do to achieve the same??

Output should look like this:

<SDPIID01>

<b><IDOC_1 BEGIN=""></b>

<b><E1VPDLH SEGMENT=""></b>

<VBELN_VL><b>0080593473</b></VBELN_VL>

<VBELN>0000208489</VBELN>

<TANUM>0000208489</TANUM>

<KODAT>20051219</KODAT>

<KOMUE>X</KOMUE>

<WADAT_IST>20051219</WADAT_IST>

<b><E1VPDLI SEGMENT=""></b>

<VBELN_VL><b>0080593473</b></VBELN_VL>

<POSNR_VL><b>000001</b></POSNR_VL>

<VBELN>0000208489</VBELN>

<POSNN>900002</POSNN>

<PIKMG>240</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>DN07212</MATNR>

<ORPOS>000001</ORPOS>

</E1VPDLI>

</E1VPDLH>

</IDOC>

<b><IDOC_2 BEGIN=""></b>

<b><E1VPDLH SEGMENT=""></b>

<VBELN_VL><b>0080593503</b></VBELN_VL>

<VBELN>0000208489</VBELN>

<TANUM>0000208489</TANUM>

<KODAT>20051219</KODAT>

<KOMUE>X</KOMUE>

<WADAT_IST>20051219</WADAT_IST>

<b><E1VPDLI SEGMENT=""></b>

<VBELN_VL><b>0080593503</b></VBELN_VL>

<POSNR_VL><b>000001</b></POSNR_VL>

<VBELN>0000208530</VBELN>

<POSNN>900002</POSNN>

<PIKMG>30</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>DM19200</MATNR>

<ORPOS>000001</ORPOS>

</E1VPDLI>

<b><E1VPDLI SEGMENT=""></b>

<VBELN_VL><b>0080593503</b></VBELN_VL>

<POSNR_VL><b>000002</b></POSNR_VL>

<VBELN>0000208530</VBELN>

<POSNN>900003</POSNN>

<PIKMG>630</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>DR19460</MATNR>

<ORPOS>000002</ORPOS>

</E1VPDLI>

<b><E1VPDLI SEGMENT=""></b>

<VBELN_VL><b>0080593503</b></VBELN_VL>

<POSNR_VL><b>000003</b></POSNR_VL>

<VBELN>0000208530</VBELN>

<POSNN>900004</POSNN>

<PIKMG>900</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>DN07216</MATNR>

<ORPOS>000003</ORPOS>

</E1VPDLI>

</E1VPDLH>

</IDOC>

<b><IDOC_3 BEGIN=""></b>

<b><E1VPDLH SEGMENT=""></b>

<VBELN_VL><b>0080593504</b></VBELN_VL>

<VBELN>0000208489</VBELN>

<TANUM>0000208489</TANUM>

<KODAT>20051219</KODAT>

<KOMUE>X</KOMUE>

<WADAT_IST>20051219</WADAT_IST>

<b><E1VPDLI SEGMENT=""></b>

<VBELN_VL<b>>0080593504</b></VBELN_VL>

<POSNR_VL><b>000001</b></POSNR_VL>

<VBELN>0000208531</VBELN>

<POSNN>900002</POSNN>

<PIKMG>450</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>D903116</MATNR>

<ORPOS>000001</ORPOS>

</E1VPDLI>

<b><E1VPDLI SEGMENT=""></b>

<VBELN_VL><b>008059350</b>4</VBELN_VL>

<POSNR_VL><b>000002</b></POSNR_VL>

<VBELN>0000208531</VBELN>

<POSNN>900003</POSNN>

<PIKMG>150</PIKMG>

<NDIFM>-100</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>DY17820</MATNR>

<ORPOS>000002</ORPOS>

</E1VPDLI>

<b><E1VPDLI SEGMENT=""></b>

<VBELN_VL><b>0080593504</b></VBELN_VL>

<POSNR_VL><b>000003</b></POSNR_VL>

<VBELN>0000208531</VBELN>

<POSNN>900004</POSNN>

<PIKMG>400</PIKMG>

<NDIFM>0</NDIFM>

<CHARG>12DE05W1</CHARG>

<MATNR>D109050</MATNR>

<ORPOS>000003</ORPOS>

</E1VPDLI>

</E1VPDLH>

</IDOC>

</SDPIID01>

Thank You

Indrasena

Former Member
0 Kudos

Hi Stefan,

We got it. We are getting required output.

I made two small changes to the mappign you given

VBELN_VL - removeContexts - splitByValue(ValueChanged) - collapseContexts - exists - creatIf - IDOC. and

VBELN_VL - removeContexts - splitByValue(ValueChanged) - index - splitByValue(ValueChanged) - E1VPDLH.

Everything else is same. Used formatByExample as User-Defined function.

Thank You Very Much

Indrasena

stefan_grube
Active Contributor
0 Kudos

Hi Indrasena,

I am sorry, I did not read the request carefully enough.

Now I have adjusted the mapping. It should repeat the IDOC node as well (and not only the E1VPDLH node).

Regards

Stefan

stefan_grube
Active Contributor
0 Kudos

Hi Indrasena,

great, but one remark from my side:

> VBELN_VL - removeContexts - splitByValue(ValueChanged) - index - splitByValue(ValueChanged) - E1VPDLH.

This might not work in each mapping.

In your case it would be OK, just to use this:

constant(empty) - E1VPDLH

Regards

Stefan

Former Member
0 Kudos

Stefan,

Thanks for your help on this problem. We have know solved the issue thanks to your knowledge. 1000 points to you. Unfortunately 10 is the limit.

Thanks again.

Jim

Former Member
0 Kudos

Hi Stefan,

We got similar scenario as you gave mapping solution above. But this time its BAPI. For IDoc, I exported IDoc signature, changed max occurs to unbounded and in message mapping imported that IDoc as XSD, with which we are able to generate multiple IDoc's, when ever there is change in VBELN_VL in source.

Here in this scenario whenever there is change in TRANS_ID we have to make new BAPI call and get the response back.

How do we acheive the same? Can we do this by message mapping? or Do we need to use BPM?? Can I change the occurence here same as we did for IDoc?

Here are the source and target(Expecting like this):

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

<b><mt_PhysCountEnt></b>

<b><row></b>

<TRANS_ID><b>1847204</b></TRANS_ID>

<PROCESSED>n</PROCESSED>

<TRANS_RFC>ZAPI_MATPHYSINV_COUNT ('20060103','2005','000',<b>'1000006021'</b>) ITEMS, RETURN</TRANS_RFC>

<ITEM><b>004</b></ITEM>

<MATERIAL>D117030</MATERIAL>

<BATCH>10OC05W1</BATCH>

<ENTRY_QNT>900</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT/>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

<b></row></b>

<b><row></b>

<TRANS_ID><b>1847204</b></TRANS_ID>

<PROCESSED>n</PROCESSED>

<TRANS_RFC>ZAPI_MATPHYSINV_COUNT('20060103','2005','000','<b>1000006021</b>') ITEMS, RETURN</TRANS_RFC>

<ITEM><b>003</b></ITEM>

<MATERIAL>D117020</MATERIAL>

<BATCH>31OC05W1</BATCH>

<ENTRY_QNT>600</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT/>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

<b></row></b>

<b><row></b>

<TRANS_ID><b>1847204</b></TRANS_ID>

<PROCESSED>n</PROCESSED>

<TRANS_RFC>ZAPI_MATPHYSINV_COUNT('20060103','2005','000','<b>1000006021</b>') ITEMS, RETURN</TRANS_RFC>

<ITEM><b>002</b></ITEM>

<MATERIAL>D117020</MATERIAL>

<BATCH>24OC05W1</BATCH>

<ENTRY_QNT>0</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT>X</ZERO_COUNT>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

<b></row></b>

<b><row></b>

<TRANS_ID><b>1847204</b></TRANS_ID>

<PROCESSED>n</PROCESSED>

<TRANS_RFC>ZAPI_MATPHYSINV_COUNT('20060103','2005','000','<b>1000006021</b>') ITEMS, RETURN</TRANS_RFC>

<ITEM><b>001</b></ITEM>

<MATERIAL>D117020</MATERIAL>

<BATCH>10OC05W1</BATCH>

<ENTRY_QNT>175</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT/>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

<b></row></b>

<b><row></b>

<TRANS_ID><b>1847205</b></TRANS_ID>

<PROCESSED>n</PROCESSED>

<TRANS_RFC>ZAPI_MATPHYSINV_COUNT('20060103','2005','000','<b>1000006023</b>') ITEMS, RETURN</TRANS_RFC>

<ITEM><b>002</b></ITEM>

<MATERIAL>D999475</MATERIAL>

<BATCH>07NO05W1</BATCH>

<ENTRY_QNT>120</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT/>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

<b></row></b>

<b><row></b>

<TRANS_ID><b>1847205</b></TRANS_ID>

<PROCESSED>n</PROCESSED>

<TRANS_RFC>ZAPI_MATPHYSINV_COUNT('20060103','2005','000','<b>1000006023</b>') ITEMS, RETURN</TRANS_RFC>

<ITEM><b>001</b></ITEM>

<MATERIAL>D509D03</MATERIAL>

<BATCH>07NO05W1</BATCH>

<ENTRY_QNT>295</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT/>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

<b></row></b>

<b></mt_PhysCountEnt></b>

TARGET:

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

<b><ns0:ZAPI_MATPHYSINV_COU</b>NT xmlns:ns0="urn:sap-com:document:sap:rfc:functions">

<COUNT_DATE>20060103</COUNT_DATE>

<FISCALYEAR>2005</FISCALYEAR>

<PERCENTAGE_VARIANCE>000</PERCENTAGE_VARIANCE>

<PHYSINVENTORY><b>1000006021</b></PHYSINVENTORY>

<ITEMS>

<item>

<ITEM><b>004</b></ITEM>

<MATERIAL>D117030</MATERIAL>

<BATCH>10OC05W1</BATCH>

<ENTRY_QNT>900</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT/>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

</item>

<item>

<ITEM><b>003</b></ITEM>

<MATERIAL>D117020</MATERIAL>

<BATCH>31OC05W1</BATCH>

<ENTRY_QNT>600</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT/>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

</item>

<item>

<ITEM><b>002</b></ITEM>

<MATERIAL>D117020</MATERIAL>

<BATCH>24OC05W1</BATCH>

<ENTRY_QNT>0</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT>X</ZERO_COUNT>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

</item>

<item>

<ITEM><b>001</b></ITEM>

<MATERIAL>D117020</MATERIAL>

<BATCH>10OC05W1</BATCH>

<ENTRY_QNT>175</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT/>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

</item>

</ITEMS>

<RETURN/>

<b></ns0:ZAPI_MATPHYSINV_COUNT></b>

<b><ns0:ZAPI_MATPHYSINV_COUNT</b> xmlns:ns0="urn:sap-com:document:sap:rfc:functions">

<COUNT_DATE>20060103</COUNT_DATE>

<FISCALYEAR>2005</FISCALYEAR>

<PERCENTAGE_VARIANCE>000</PERCENTAGE_VARIANCE>

<PHYSINVENTORY><b>1000006023</b></PHYSINVENTORY>

<ITEMS>

<item>

<ITEM><b>002</b></ITEM>

<MATERIAL>D999475</MATERIAL>

<BATCH>07NO05W1</BATCH>

<ENTRY_QNT>120</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT/>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

</item>

<item>

<ITEM><b>001</b></ITEM>

<MATERIAL>D509D03</MATERIAL>

<BATCH>07NO05W1</BATCH>

<ENTRY_QNT>295</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT/>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

</item>

</ITEMS>

<RETURN/>

<b></ns0:ZAPI_MATPHYSINV_COUNT></b>

Thank You

Indrasena

stefan_grube
Active Contributor
0 Kudos

Hi Indrasena,

as a BAPI is a synchonous call, you have to do it with BPM.

Define a multi mapping where you split your original requests to multiple BAPI requests. Call each BAPI and combine the results to a single response.

This is very complicated, so I recommend to consider to write a wrapper RFC with enhanced interface which calls the BAPIs as often as needed. A good ABAP developer will do this quicker than an XI expert can create the BPM

Regards

Stefan

Former Member
0 Kudos

Hi Stefan,

I defined multi-mapping to split original request to multiple BAPI requests. Output of multi-mapping is follows:

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

<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">

<ns0:Message1>

<b><mt_MessgeSplit></b>

<b><row></b>

<TRANS_ID><b>1847204</b></TRANS_ID>

<PROCESSED>n</PROCESSED>

<TRANS_RFC>ZAPI_MATPHYSINV_COUNT('20060103','2005','000','1000006021') ITEMS, RETURN</TRANS_RFC>

<ITEM>004</ITEM>

<MATERIAL>D117030</MATERIAL>

<BATCH>10OC05W1</BATCH>

<ENTRY_QNT>900</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT/>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

<b></row></b>

<b><row></b>

<TRANS_ID><b>1847204</b></TRANS_ID>

<PROCESSED>n</PROCESSED>

<TRANS_RFC>ZAPI_MATPHYSINV_COUNT('20060103','2005','000','1000006021') ITEMS, RETURN</TRANS_RFC>

<ITEM>003</ITEM>

<MATERIAL>D117020</MATERIAL>

<BATCH>31OC05W1</BATCH>

<ENTRY_QNT>600</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT/>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

<b></row></b>

<b><row></b>

<TRANS_ID><b>1847204</b></TRANS_ID>

<PROCESSED>n</PROCESSED>

<TRANS_RFC>ZAPI_MATPHYSINV_COUNT('20060103','2005','000','1000006021') ITEMS, RETURN</TRANS_RFC>

<ITEM>002</ITEM>

<MATERIAL>D117020</MATERIAL>

<BATCH>24OC05W1</BATCH>

<ENTRY_QNT>0</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT>X</ZERO_COUNT>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

<b></row></b>

<b><row></b>

<TRANS_ID><b>1847204</b></TRANS_ID>

<PROCESSED>n</PROCESSED>

<TRANS_RFC>ZAPI_MATPHYSINV_COUNT('20060103','2005','000','1000006021') ITEMS, RETURN</TRANS_RFC>

<ITEM>001</ITEM>

<MATERIAL>D117020</MATERIAL>

<BATCH>10OC05W1</BATCH>

<ENTRY_QNT>175</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT/>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

<b></row</b>>

<b></mt_MessgeSplit></b>

<b><mt_MessgeSplit></b>

<b><row></b>

<TRANS_ID>1847205</TRANS_ID>

<PROCESSED>n</PROCESSED>

<TRANS_RFC>ZAPI_MATPHYSINV_COUNT('20060103','2005','000','1000006023') ITEMS, RETURN</TRANS_RFC>

<ITEM>002</ITEM>

<MATERIAL>D999475</MATERIAL>

<BATCH>07NO05W1</BATCH>

<ENTRY_QNT>120</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT/>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

<b></row></b>

<b><row></b>

<TRANS_ID>1847205</TRANS_ID>

<PROCESSED>n</PROCESSED>

<TRANS_RFC>ZAPI_MATPHYSINV_COUNT('20060103','2005','000','1000006023') ITEMS, RETURN</TRANS_RFC>

<ITEM>001</ITEM>

<MATERIAL>D509D03</MATERIAL>

<BATCH>07NO05W1</BATCH>

<ENTRY_QNT>295</ENTRY_QNT>

<ENTRY_UOM>EA</ENTRY_UOM>

<ENTRY_UOM_ISO/>

<SALES_VAL/>

<ZERO_COUNT/>

<MATERIAL_EXTERNAL/>

<MATERIAL_GUID/>

<MATERIAL_VERSION/>

<b></row></b>

<b></mt_MessgeSplit></b>

</ns0:Message1>

</ns0:Messages>

What are the steps I need to follow in BPM to send these messages as individual BAPI calls to SAP??

We are using warpper RFC to original BAPI_MATPHYSINV_COUNT.

Thank You

Indrasena

stefan_grube
Active Contributor
0 Kudos

Hi Indrasena,

here are some useful weblogs:

synchronous calls in BPM:

/people/arpit.seth/blog/2005/06/27/rfc-scenario-using-bpm--starter-kit

sync - async - Brigde:

/people/sriram.vasudevan3/blog/2005/01/11/demonstrating-use-of-synchronous-asynchronous-bridge-to-integrate-synchronous-and-asynchronous-systems-using-ccbpm-in-sap-xi

sync - sync - Scenario:

https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/1403 [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken]

Multimapping:

/people/narendra.jain/blog/2005/12/30/various-multi-mappings-and-optimizing-their-implementation-in-integration-processes-bpm-in-xi

Regards

Stefan

Answers (2)

Answers (2)

STALANKI
Active Contributor
0 Kudos

Stefan..I think there should be a XI mapping forum sepeartaely..:)

Seems that you can solve any mapping problem..:)

stefan_grube
Active Contributor
0 Kudos

Hi Jim,

you could do this with SP13:


VBELN_VL - removeContexts - splitByValue(valueChanged) - collapseContexts - IDOC
constant(1) - BEGIN

constant() - E1VPDLH
constant(1) - SEGMENT(1)

VBELN_VL - removeContexts - splitByValue(valueChanged) - VBELN_VL(1)(*)

                                                 VBELN 
                                                        formatByExample - VBELN(1)(*)
VBELN_VL - removeContexts - splitByValue(valueChanged) /

the other header fields similar

(*) if the occurrancy of the target field is not 0:1 or 1:1, then you have to add collapseContexts - splitByValue(eachValue) before the target.


VBELN_VL - removeContexts - splitByValue(valueChanged) - E1VPDLI
VBELN_VL - removeContexts - splitByValue(valueChanged) - index - splitByValue(eachValue) - SEGMENT(2)

VBELN_VL - VBELN_VL(2)

the other position fields equal

Hope that helps

Stefan

Message was edited by: Stefan Grube