如何使用.Net中的IRFC函数将多个表传递给SAP
问题描述:
我将3个表传递给在SAP上创建订单的IRfcFunction。 当我尝试调试该程序时,它没有给出任何错误消息, 但这不会在SAP上创建任何顺序。如何使用.Net中的IRFC函数将多个表传递给SAP
我正在寻找任何形式的帮助或提示来解决此问题。 谢谢你的时间。
IRfcFunction orderDetails = _rfcDest.Repository.CreateFunction(strBapi);
RfcStructureMetadata metaData = _rfcDest.Repository.GetStructureMetadata("ZBAPI_A_STRU_ORDER_CREATE_PART");
IRfcStructure structPartners = metaData.CreateStructure();
structPartners.SetValue("PARTN_ROLE", "SP");
structPartners.SetValue("PARTN_NUMB", "110024");
IRfcTable tblPartner = orderDetails.GetTable("PARTNERS");
tblPartner.Append(structPartners);
structPartners = metaData.CreateStructure();
structPartners.SetValue("PARTN_ROLE", "SH");
structPartners.SetValue("PARTN_NUMB", "110005");
tblPartner.Append(structPartners);
orderDetails.SetValue("PARTNERS", tblPartner);
metaData = _rfcDest.Repository.GetStructureMetadata("ZBAPI_A_STRU_ORDER_CREATE_COND");
IRfcStructure structConditions = metaData.CreateStructure();
structConditions.SetValue("ITM_NUMBER", "10");
structConditions.SetValue("COND_TYPE", "PR00");
structConditions.SetValue("COND_VALUE", "30");
structConditions.SetValue("CURRENCY", "USD");
IRfcTable tblConditions = orderDetails.GetTable("CONDITIONS");
tblConditions.Append(structConditions);
orderDetails.SetValue("CONDITIONS", tblConditions);
metaData = _rfcDest.Repository.GetStructureMetadata("ZBAPI_A_STRU_ORDER_CREATE_ITEM");
IRfcStructure structItems = metaData.CreateStructure();
structItems.SetValue("MATERIAL", "F500");
structItems.SetValue("TARGET_QTY", "3");
IRfcTable tblItems = orderDetails.GetTable("ITEMS");
tblItems.Append(structItems);
orderDetails.SetValue("ITEMS", tblItems);
RfcSessionManager.BeginContext(_rfcDest);
orderDetails.Invoke(_rfcDest);
IRfcStructure bapiTable = orderDetails.GetStructure("RETURN");
RfcSessionManager.EndContext(_rfcDest);
答
IRfcFunction orderDetails = _rfcDest.Repository.CreateFunction(strBapi);
RfcStructureMetadata metaData = _rfcDest.Repository.GetStructureMetadata ("ZBAPI_A_STRU_ORDER_CREATE_PART");
IRfcStructure structPartners = metaData.CreateStructure();
structPartners.SetValue("PARTN_ROLE", "SP");
structPartners.SetValue("PARTN_NUMB", "00110");
IRfcTable tblPartner = orderDetails.GetTable("PARTNERS");
tblPartner.Append(structPartners);
structPartners = metaData.CreateStructure();
structPartners.SetValue("PARTN_ROLE", "SH");
structPartners.SetValue("PARTN_NUMB", "0011567890");
tblPartner.Append(structPartners);
orderDetails.SetValue("PARTNERS", tblPartner);
metaData = _rfcDest.Repository.GetStructureMetadata("ZBAPI_A_STRU_ORDER_CREATE_COND");
IRfcStructure structConditions = metaData.CreateStructure();
structConditions.SetValue("ITM_NUMBER", "10");
structConditions.SetValue("COND_TYPE", "PR00");
structConditions.SetValue("COND_VALUE", "30");
structConditions.SetValue("CURRENCY", "USD");
IRfcTable tblConditions = orderDetails.GetTable("CONDITIONS");
tblConditions.Append(structConditions);
orderDetails.SetValue("CONDITIONS", tblConditions);
metaData = _rfcDest.Repository.GetStructureMetadata("ZBAPI_A_STRU_ORDER_CREATE_ITEM");
IRfcStructure structItems = metaData.CreateStructure();
structItems.SetValue("MATERIAL", "F500");
structItems.SetValue("TARGET_QTY", "3");
IRfcTable tblItems = orderDetails.GetTable("ITEMS");
tblItems.Append(structItems);
orderDetails.SetValue("ITEMS", tblItems);
RfcSessionManager.BeginContext(_rfcDest);
orderDetails.Invoke(_rfcDest);
IRfcStructure bapiTable = orderDetails.GetStructure("RETURN");
RfcSessionManager.EndContext(_rfcDest);
+0
谢谢Venky – HGMamaci
谢谢。我解决了这个问题。我必须将PARTN_NUMB作为10个字符与领先的0 s一起传递。 – Venky
+1提供了一个如何获得Rfc结构元数据的例子,这是我的问题! – Gareth
@Venky:事实上,您可以在此处详细写下您的解决方案,并将其标记为解决问题的答案;) – 2013-11-24 05:50:18