cancel
Showing results for 
Search instead for 
Did you mean: 

BOM CREATION

Former Member
0 Kudos

I have a structured file for posting multiple BOMs through XI into SAP. I have mapped the structure through my communication channel using flags to denote each BOM header and the BOM items benath that BOM header.

The interface mapping is from the SENDER file to SAP RFC CSAP_MAT_BOM_CREATE.

XI picks up the senders file as 10 structures based on the data type and commmuniction channel I have set up (each of these BOM strucutres is seen in the PAYLOAD in SXMB_MONI).

XI then maps this to SAP rfc interface CSAP_MAT_BOM_CREATE. It works but for only 1 BOM strucutre and not for the other 9 BOMs that XI is holding. How do I configure XI to pick up all 10 BOM structures at once? Can anyone point me in the right direction so all the BOMs would be mapped?

Thanks for your help. MC

Accepted Solutions (1)

Accepted Solutions (1)

MichalKrawczyk
Active Contributor
0 Kudos

Hi Mark,

have you specified: <b><i>Recordsets per Message</i></b> parameter?

http://help.sap.com/saphelp_nw04/helpdata/en/2c/181077dd7d6b4ea6a8029b20bf7e55/content.htm

I'm not sure but it seems with this function you can only post one BOM at a time - that's why I think you should create many message from you file (with the parameter show above)

Regards,

michal

Message was edited by: Michal Krawczyk

MichalKrawczyk
Active Contributor
0 Kudos

You can always check if you can map many items to RFC

in the Test tab of the mapping program

just paste the message with many BOM's and check if the mapping program works without any errors.

Regards,

michal

Former Member
0 Kudos

Hi Michal,

thanks for your replies,

I have specified the recordsets per message in the commmunication channel.

I'll do as you suggest and test with the message.

I presumed that XI would recognise that there are multiple record sets and call the RFC the required number of times. Is this not correct? If it is not would I then nned to create my owm RFC shell and co-ordinate the processing from there?

Thanks, MC

MichalKrawczyk
Active Contributor
0 Kudos

Hi,

if you specify "recordsets per message" as *

then: (from help.sap.com):

"The default value is *. In the default setting, all recordsets are included in a message."

but in your case try you should post as many messages as

BOMs I believe

so 1 by 1

Try the mapping and you'll see

Regards,

michal

Former Member
0 Kudos

I've tested the XML message. It has nine recordsets (or BOMs within the message. The message maps only one of these BOMs to the SAP interface. I guess I need to create multiple messages (with a single recordset per message)from the source file but I'm not sure how to achieve that as yet. Any further info would be welcome.

Thanks, MC

MichalKrawczyk
Active Contributor
0 Kudos

Hi,

if you specify: Recordsets per Message = 1

it doesn't work?

Regards,

michal

Former Member
0 Kudos

Michal, it certainly does. I had 10 in there before so obviously giving me the 10 recordsets in the message. Clarity dawns!! Now the RFC call is made 10 times.

Thanks for you input. Mark

MichalKrawczyk
Active Contributor
0 Kudos

I'm happy it works too:)

Regards,

michal

Former Member
0 Kudos

Hi,

Do you know sth about using CSAP_MAT_BOM_CREATE directly into Java (via JCO)?

I've faced many problems and solved them successfully, but I still have really strange one. I can create BOM with one item, but if I try to create BOM with more than one, function throws a terminating error during execution.

I don't understand why. Used components exist in material master.

Perhaps you know whether it is possible to create multilevel BOM by using CSAP_MAT_BOM_CREATE?

I show the source code below:

JCO.Function function;
		try {
			function = this.createFunction("CSAP_MAT_BOM_CREATE");
		} catch (CreateFunctionException e) {
			return e.toString();
		}
		if (function == null) {
			return "Error: createBom() - Function==null";
		}
 
		//System.out.println(function.getImportParameterList().get);
		
		function.getImportParameterList().setValue("TESTBICYCLE4", "MATERIAL");
		function.getImportParameterList().setValue("1", "BOM_USAGE");
		function.getImportParameterList().setValue("03.01.2007", "VALID_FROM");
		
		Table tstpo=function.getTableParameterList().getTable("T_STPO");
		tstpo.appendRow();
		
		tstpo.setValue("0010", "ITEM_NO");
		tstpo.setValue("L", "ITEM_CATEG");
		tstpo.setValue("TESTIRON", "COMPONENT");
		tstpo.setValue("5", "COMP_QTY");
		tstpo.setValue("ST", "COMP_UNIT");
		
//if i comment following lines execution is possible, otherwise not
		tstpo.appendRow();
		
		tstpo.setValue("0020", "ITEM_NO");
		tstpo.setValue("L", "ITEM_CATEG");
		tstpo.setValue("TESTPLASTIC", "COMPONENT");
		tstpo.setValue("15", "COMP_QTY");
		tstpo.setValue("ST", "COMP_UNIT");
//execution
 
executeBapi(function);

Answers (0)