on 12-21-2005 6:36 PM
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
Stefan,
We are currently on SP12. Is there some advanced user function that would simplify this process?
Thanks,
Jim
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
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
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
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
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
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
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
Stefan..I think there should be a XI mapping forum sepeartaely..:)
Seems that you can solve any mapping problem..:)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
93 | |
10 | |
10 | |
9 | |
9 | |
7 | |
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.