RFC错误“容器元数据...的元素BAPIRETURN1未知”

时间:2019-07-05 09:04:51

标签: c# sap abap saprfc sap-connector

在使用SAP .NET连接器的C#程序中,我想调用RFC函数“ BAPI_GET_PAYROLL_RESULT_LIST”并读取结果。

我用SE37查看了该函数。在那里,我发现导出参数应为BAPIRETURN1,这是一个结构。

因此,我搜索了RFC调用的示例代码,并针对我的情况对其进行了修改。

我已经尝试读取表BAPI7004_RL,因为它位于SE37中的信息中,并且我不知道是否必须使用export参数或表。

这是我的代码:

string appServerHost = ConfigurationManager.AppSettings["AppServerHost"];
string name = ConfigurationManager.AppSettings["Name"];
string systemnumber = ConfigurationManager.AppSettings["SystemNumber"];
string user = ConfigurationManager.AppSettings["User"];
string pw = ConfigurationManager.AppSettings["Password"];
string client = ConfigurationManager.AppSettings["Client"];
string language = ConfigurationManager.AppSettings["Language"];

RfcConfigParameters parms = new RfcConfigParameters
{
    { RfcConfigParameters.AppServerHost, appServerHost },
    { RfcConfigParameters.Name, name },
    { RfcConfigParameters.SystemNumber, systemnumber },
    { RfcConfigParameters.User, user },
    { RfcConfigParameters.Password, pw },
    { RfcConfigParameters.Client, client },
    { RfcConfigParameters.Language, language }
};

RfcDestination dest = RfcDestinationManager.GetDestination(parms);
RfcRepository repo = dest.Repository;

IRfcFunction fnc = dest.Repository.CreateFunction("BAPI_GET_PAYROLL_RESULT_LIST");
fnc.SetValue("employeenumber", "0001");

fnc.Invoke(dest);

RfcStructureMetadata TableMetaData = dest.Repository.GetStructureMetadata("BAPIRETURN1");

IRfcStructure stru = fnc.GetStructure("BAPIRETURN1"); //BAPI7004_RL

//IRfcTable tabDetail = fnc.GetTable("BAPI7004_RL"); //BAPIRETURN1

IRfcStructure stru = fnc.GetStructure("BAPIRETURN1")行之后,在运行时引发了一个异常,表示:

  

容器BAPI_GET_PAYROLL_RESULT_LIST的元素BAPIRETURN1未知

当我在桌子上尝试时,得到相同的结果。

我的代码中的错误在哪里?还是可能是权限问题?

1 个答案:

答案 0 :(得分:4)

参数的名称是“ RETURN”,而不是您指定的“ BAPIRETURN1”。 “ BAPIRETURN1”是类型名称,即关联的元数据的名称。