RFC 错误 "Element BAPIRETURN1 of container metadata ... is unknown"
RFC error "Element BAPIRETURN1 of container metadata ... is unknown"
在我使用 SAP .NET 连接器的 C# 程序中,我想调用 RFC 函数 "BAPI_GET_PAYROLL_RESULT_LIST" 并读取结果。
我用 SE37
查看了函数。在那里我发现导出参数应该是BAPIRETURN1
,这是一个结构体。
所以我搜索了一个 RFC 调用的示例代码并针对我的情况进行了修改。
我已经尝试读取table BAPI7004_RL
,因为它在SE37
中的信息中,我不知道是否必须使用导出参数或table.
这是我的代码:
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")
行之后在运行时抛出一个异常,即:
Element BAPIRETURN1 of container BAPI_GET_PAYROLL_RESULT_LIST unknown
当我尝试使用 table 时,我得到了相同的结果。
我的代码哪里出错了?或者可能是权限问题?
参数的名称是"RETURN",而不是您指定的"BAPIRETURN1"。
"BAPIRETURN1" 是类型名称,即关联元数据的名称。
在我使用 SAP .NET 连接器的 C# 程序中,我想调用 RFC 函数 "BAPI_GET_PAYROLL_RESULT_LIST" 并读取结果。
我用 SE37
查看了函数。在那里我发现导出参数应该是BAPIRETURN1
,这是一个结构体。
所以我搜索了一个 RFC 调用的示例代码并针对我的情况进行了修改。
我已经尝试读取table BAPI7004_RL
,因为它在SE37
中的信息中,我不知道是否必须使用导出参数或table.
这是我的代码:
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")
行之后在运行时抛出一个异常,即:
Element BAPIRETURN1 of container BAPI_GET_PAYROLL_RESULT_LIST unknown
当我尝试使用 table 时,我得到了相同的结果。
我的代码哪里出错了?或者可能是权限问题?
参数的名称是"RETURN",而不是您指定的"BAPIRETURN1"。 "BAPIRETURN1" 是类型名称,即关联元数据的名称。