2011-03-01 141 views
5

我正在創建一個與SAP集成的系統。與SAP集成

客戶給我的功能和參數,據他介紹,在SAP,但在我的代碼,通常是執行此功能時,我嘗試檢索參數,它返回我空。

這裏我的代碼

SAPFunctionsOCX.SAPFunctionsClass func = new SAPFunctionsOCX.SAPFunctionsClass(); 
func.Connection = connection; 
SAPFunctionsOCX.IFunction ifunc = (SAPFunctionsOCX.IFunction)func.Add(functionName); 
SAPTableFactoryCtrl.Tables tables = (SAPTableFactoryCtrl.Tables)ifunc.Tables; 
SAPTableFactoryCtrl.Table objTable = (SAPTableFactoryCtrl.Table)tables[tableName]; 

//Paramters (Find one column "MATNR" 
SAPTableFactoryCtrl.Columns cols2 = (SAPTableFactoryCtrl.Columns)objTable.Columns; 
for (int i = 1; i <= cols2.Count; i++) 
{ 
    SAPTableFactoryCtrl.Column col = (SAPTableFactoryCtrl.Column)cols2[i]; 
    Console.WriteLine(col.Name); 
} 

//Error here! matnr == null 
SAPFunctionsOCX.IParameter matnr = (SAPFunctionsOCX.IParameter)ifunc.get_Exports("MATNR"); 

搜索互聯網發現類似地雷的幾個例子, hereherehere

爲什麼方法。 get_Exports( 「MATNR」);返回null?

+0

這是一個標準的功能模塊?我在代碼中看不到它。導出參數列表可以爲空,也許有需要檢查的表參數。 – 2011-03-01 15:01:10

+0

functionName,tableName是分別包含函數名和表名的變量。 表參數無法恢復,有一個方法get_Exports和函數。 (請參閱[此處]的示例(http://forums.sdn.sap.com/thread.jspa?threadID=1425169),[這裏](http://sunhongwei2002.blog.163.com/blog/static/149007012201062165717737 /)和[這裏](http://blog.csdn.net/robaot/archive/2009/10/20/4704127.aspx) – ridermansb 2011-03-01 17:12:41

+0

我不認爲例3是正確的。通常你指定導入參數不能導出參數。 – 2011-03-02 09:47:21

回答

1

什麼是哪裏給你的RFC功能的確切參數?
在您看來,第一部分將遍歷表的列名,而在第二個,你(未在表IE)尋找一個參數。

問候
紀堯姆

PS:ABAP是SAP專有語言

+0

這個循環只是列出了列的名字,除此以外沒有用處 你想要檢索的參數是「MATNR」 – ridermansb 2011-03-01 17:06:22

+0

是MATNR一個表的字段?正如我所說的,你試圖獲得一個參數,沒有這個函數的技術描述,我們可以做的事情就不多了,這是一個標準函數還是一個特定函數(在這種情況下,它會以'Z'或'Y'開始)? – 2011-03-01 19:46:49

+0

函數begi ns與「y」(我會得到這個函數的全名就是這裏的評論) MATNR是一個字段。 – ridermansb 2011-03-01 19:56:38

0

我想你忘記了實際的函數調用,至少代碼示例

+0

我不確定。如果示例鏈接是正確的,他試圖在調用之前獲取參數來填充它... – 2011-03-01 15:16:16

+0

我不能在不傳遞參數之前調用該函數,否則它將帶來所有記錄(無過濾器)。 – ridermansb 2011-03-01 17:07:38

+0

你爲什麼想要訪問導出參數列表?它不會保存任何值,直到執行功能模塊 – 2011-03-02 09:44:36