2011-11-16 36 views
5

我將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

回答

6
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

相關問題