【问题标题】:Integration with SAP与 SAP 集成
【发布时间】:2011-07-06 12:43:44
【问题描述】:

我正在创建一个与 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");

在网上搜索了几个和我类似的例子, hereherehere!

为什么采用这种方法。 get_Exports("MATNR");返回 null?

【问题讨论】:

  • 这是标准功能模块吗?我在代码中看不到它。导出参数列表可能为空,可能需要检查表参数。
  • functionName, tableName 是分别包含函数名和表名的变量。表参数不能恢复,有get_Exports方法和函数。 (参见hereherehere 上的示例
  • 我认为示例 3 不正确。通常您分配导入参数而不是导出参数。
  • 其实我也试过get_Imports的方法,但他也返回null

标签: c# parameters null integration sap


【解决方案1】:

为 RFC 函数提供给您的确切参数是什么?
在第一部分中,您似乎在遍历表的列名,而在第二部分中,您正在搜索参数(即不在表中)。

问候
纪尧姆

PS : ABAP 是 SAP 专有语言

【讨论】:

  • 循环只是列出列的名称。除此之外没有任何用处。您要检索的参数是“MATNR”
  • MATNR 是表的一个字段吗?正如我所说,您正在尝试获取参数。没有功能的技术描述,我们无能为力。这是标准功能还是特定功能(在这种情况下,它将以“Z”或“Y”开头)?
  • 函数以“y”开头(这里我会得到函数的全名) MATNR 是一个字段。
  • 函数名称是: YYPCL_RFC_ESTOQUES。 参数是: MATNR
【解决方案2】:

我想你忘记了实际的函数调用,至少在代码示例中

【讨论】:

  • 我不确定。如果示例链接正确,他正在尝试在调用之前获取参数以填充它...
  • 我不能在不传递参数之前调用该函数,否则它将带来所有记录(无过滤器)。
  • 为什么要访问导出参数列表?在执行功能模块之前它不会保存任何值
  • 因为我需要将参数传递给函数才能过滤结果。我只是按照上面列出的例子
  • 这也困扰着我......通常你会得到“导入”参数,填充它们,执行并获取导出参数。在您的代码和示例中,您正在填写导出。也许这是一个“修改”参数。这就是我们要求函数定义的原因
猜你喜欢
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-15
相关资源
最近更新 更多