2011-03-01 4 views
5

SAP와 통합 할 시스템을 만들고 있습니다.SAP와의 통합

클라이언트가 나에게 함수와 매개 변수를주었습니다.이 함수는 대개 SAP에서 수행되었지만 매개 변수를 검색하려고하면 내 코드에서 null을 반환합니다. 여기

내 코드

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"); 

은 인터넷을 검색하면, here, herehere을 광산과 유사한 몇 가지 예를 발견!

이유는 무엇입니까? get_Exports ("MATNR"); null를 돌려 주는가?

+0

이 표준 기능 모듈에 실제 함수 호출을 잊었다 생각입니까? 코드에서 볼 수 없습니다. 내보내기 매개 변수 목록이 null 일 수 있습니다. 대신 확인해야하는 테이블 매개 변수가있을 수 있습니다. –

+0

functionName, tableName은 함수의 이름과 테이블 이름을 각각 포함하는 변수입니다. 테이블 매개 변수를 복구 할 수 없으며 get_Exports 및 function 메소드가 있습니다. ([here] (http://forums.sdn.sap.com/thread.jspa?threadID=1425169), [here] (http://sunhongwei2002.blog.163.com/blog/static/149007012201062165717737)의 예제를 참조하십시오. /) and [here] (http://blog.csdn.net/robaot/archive/2009/10/20/4704127.aspx) – ridermansb

+0

예제 3은 정확하지 않다고 생각합니다. 일반적으로 가져 오기 매개 변수는 내보낼 매개 변수가 아닙니다. –

답변

1

RFC 기능에 대해 제공되는 정확한 매개 변수는 무엇입니까?
첫 번째 부분에서는 테이블의 열 이름을 반복하는 것으로 보이고 두 번째 부분에서는 매개 변수 (예 : 테이블이 아님)를 검색하고 있습니다.

관련
기욤

PS : ABAP는 SAP 고유의 언어

+0

루프는 열의 이름을 나열하는 것입니다. 검색 할 매개 변수는 "MATNR" – ridermansb

+0

은 MATNR입니다. 테이블의 필드? 내가 말했듯이, 당신은 매개 변수를 얻으려고합니다. 함수에 대한 기술적 인 설명이 없다면, 우리가 할 수있는 일은 많지 않습니다. 표준 함수 또는 특정 함수입니까? 'Z'또는 'Y'로 시작)? –

+0

function begi ns "y"(여기서 함수의 전체 이름은 주석입니다.) MATNR은 필드입니다. – ridermansb

0

난 당신이 적어도 코드 샘플

+0

잘 모르겠습니다. 예제 링크가 맞으면 호출하기 전에 매개 변수를 채우려고합니다. –

+0

그렇지 않으면 매개 변수를 전달하지 않고 함수를 호출 할 수 없습니다. 그렇지 않으면 모든 레코드 (필터 없음)가 표시되기 때문입니다. – ridermansb

+0

왜 내보내기 매개 변수 목록에 액세스하려고합니까? 결과를 필터링 할 수 있으려면 함수에 매개 변수를 전달해야하므로 함수 모듈이 실행될 때까지는 아무 값도 보유하지 않습니다. –