2016-01-20 77 views
4

我想使用SAP創建併發送idoc到SAP。網絡連接器3.x.如何使用SAP .Net連接器3創建併發送Idoc到SAP 3

我有我的應用程序配置的RFC目標:

_rfcDestination = RfcDestinationManager.GetDestination(_destinationName); 

但我不能找到如何創建和發送的IDoc任何例子。

任何人都可以提供一些關於如何創建和發送idoc的示例代碼?

+0

SAP NCo 3.0沒有任何內置的IDOC處理功能集,如Java版本或某些類似ERP連接的API所構建的功能集。無需SAP NCo即可完成此操作的一種方法是通過HTTP,您可以在本文中看到它,http://scn.sap.com/community/pi-and-soa-middleware/blog/2012/01/14/post-idoc-to-sap-erp-over-http-from-any-application你將需要你的基礎來幫助你使用合作伙伴配置文件等,但是你可以發佈真正的XML到Web服務並生成和IDOC。 – Bearcat9425

回答

6

使用NCo向SAP系統提交idoc的一種方式是功能模塊IDOC_INBOUND_ASYNCHRONOUS。功能模塊有幾個包含你的idoc數據的表參數。表IDOC_CONTROL_REC_40包含控制記錄,IDOC_DATA_REC_40包含idoc數據段。

IDOC_DATA_REC_40包含稱爲SDATA的字段。該字段包含idoc段數據作爲單個連接字符串,其中固定字段長度爲

var fnc = destination.Repository.CreateFunction("IDOC_INBOUND_ASYNCHRONOUS"); 
var controlTable = fnc.GetTable("IDOC_CONTROL_REC_40"); 
var dataTable = fnc.GetTable("IDOC_DATA_REC_40"); 

// control segment 
controlTable.Append(); 
controlTable.CurrentRow.SetValue("TABNAM", "EDI_DC40 "); 
... 


// here you add the data segments 
dataTable.Append(); 
dataTable.CurrentRow.SetValue(...); 

fnc.Invoke(destination); 

的IDOC數據建設,爲IDOC_DATA_REC_40-SDATA,必須在你的代碼手工完成 - 你需要知道的字段長度,包括位數的數字領域。可能有辦法從SAP系統獲取這些信息並在代碼中使用它,但我從來沒有嘗試過。