使用C#sap-connector搜索SAP客户

时间:2017-12-21 10:07:20

标签: c# sap sap-connector

我需要从C#应用程序中搜索SAP系统中的客户。 我正在使用C#.NET连接器。 我试图调用BAPI“BAPI_CUSTOMER_FIND”来获取名称以“C”字符开头的所有客户,这是我的代码:

SAPConnectionConfigurator cfg = new SAPConnectionConfigurator();
RfcDestinationManager.RegisterDestinationConfiguration(cfg);
RfcDestination dest = RfcDestinationManager.GetDestination("mySAPdestination");
RfcRepository repo = dest.Repository;
IRfcFunction customerList = repo.CreateFunction("BAPI_CUSTOMER_FIND");
customerList.SetValue("MAX_CNT", "100");
IRfcTable searchFields = customerList.GetTable("SELOPT_TAB");
searchFields.Insert();
searchFields.CurrentRow.SetValue("COMP_CODE", "");
searchFields.CurrentRow.SetValue("TABNAME", "KNA1");
searchFields.CurrentRow.SetValue("FIELDNAME", "NAME1");
searchFields.CurrentRow.SetValue("FIELDVALUE", "C*");
customerList.Invoke(dest);
IRfcTable results = customerList.GetTable("RESULT_TAB");

呼叫正常,但我不知道如何阅读结果。我需要一个客户列表,但RESULT_TAB表有这种奇怪的结构:

https://www.sapdatasheet.org/abap/tabl/bapikna111.html

如何获得客户名单?我打电话给错误的BAPI吗?

1 个答案:

答案 0 :(得分:1)

您可能没有获得任何结果,在这种情况下,表RESULT_TAB只包含一行,其中包含原始搜索参数和警告消息。您需要将参数PL_HOLD设置为'X'以允许使用占位符。

如果有结果,您会在表格RESULT_TAB中看到几行,其中字段FIELDVALUE包含实际的客户名称(因为您在字段NAME1中搜索了) - 更改了搜索字段和结果也会发生变化)和CUSTOMERNUMBER包含客户编号。

如果结果多于MAX_CNT,中设置的结果,则您会在中查看消息类型I,ID FN,号码063´结果集的行(使用登录语言中的消息告诉您结果超过X)。

如果您的搜索根本没有产生任何结果,则结构RETURN将包含警告消息(消息类型W,ID FN,编号{{1}表格802中的单行应包含另一个警告消息类型RESULT_TAB,ID W,编号FN以及您登录语言中的解释性消息文本,告诉您在您的搜索中找不到帐户。

如果您想知道如何阅读065,您可以迭代其内容。它本质上是IRfcStructure项目的列表。

IRfcTable
相关问题