2011-03-01 19 views
5

Estoy creando un sistema para integrar con SAP.Integración con SAP

El cliente me dio la función y los parámetros, según él, esta función generalmente se realizaba en SAP pero en mi código cuando trato de recuperar el parámetro, me devuelve nulo.

Aquí mi código

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

Buscando por internet encontré varios ejemplos similares a la mía, here, here y here!

Por qué el método. get_Exports ("MATNR"); devuelve nulo?

+0

se trata de un módulo de función estándar? No puedo verlo en el código. La lista de parámetros de exportación podría ser nula, tal vez haya parámetros de tabla que deba verificar en su lugar. –

+0

functionName, tableName son variables que contienen el nombre de la función y el nombre de la tabla, respectivamente. Los parámetros de tabla no se pueden recuperar, hay un método get_Exports y función. (Vea ejemplos en [aquí] (http://forums.sdn.sap.com/thread.jspa?threadID=1425169), [aquí] (http://sunhongwei2002.blog.163.com/blog/static/149007012201062165717737 /) y [aquí] (http://blog.csdn.net/robaot/archive/2009/10/20/4704127.aspx) – ridermansb

+0

No creo que el ejemplo 3 sea correcto. Normalmente se asignan parámetros de importación y no se exportan los parámetros. –

Respuesta

1

¿Cuáles son los parámetros exactos que se le dieron para la función RFC?
En la primera parte parece que está bucleando el nombre de la columna de una tabla, y en la segunda, está buscando un parámetro (es decir, no en la tabla).

respecto
Guillaume

PS: ABAP de SAP es lenguaje propietario

+0

El bucle era solo para enumerar los nombres de las columnas. No sirve de nada más. El parámetro que desea recuperar es el "MATNR" – ridermansb

+0

es MATNR un campo de la tabla? como he dicho, está tratando de obtener un parámetro. Sin la descripción técnica de la función, no hay mucho que podamos hacer. ¿Es esta una función estándar o específica (en cuyo caso será comenzar por 'Z' o 'Y')? –

+0

función begi ns con "y" (obtendré el nombre completo de la función es un comentario aquí) MATNR es un campo. – ridermansb

0

Creo que se le olvidó la llamada a la función, al menos en el ejemplo de código

+0

No estoy seguro. Si los enlaces de ejemplo son correctos, intenta obtener el parámetro para llenarlo antes de la llamada ... –

+0

No puedo llamar a la función sin pasar el parámetro antes porque de lo contrario traerá todos los registros (sin filtro). – ridermansb

+0

¿Por qué está tratando de acceder a la lista de parámetros de exportación? No mantendrá ningún valor hasta que se ejecute el módulo de función –