如何使用.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); 
+1

谢谢。我解决了这个问题。我必须将PARTN_NUMB作为10个字符与领先的0 s一起传递。 – Venky

+2

+1提供了一个如何获得Rfc结构元数据的例子,这是我的问题! – Gareth

+0

@Venky:事实上,您可以在此处详细写下您的解决方案,并将其标记为解决问题的答案;) – 2013-11-24 05:50:18

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