【问题标题】:Search SAP customers with C# sap-connector使用 C# sap-connector 搜索 SAP 客户
【发布时间】:2017-12-21 10:07:20
【问题描述】:

我需要从 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?

【问题讨论】:

    标签: c# sap sap-dotnet-connector


    【解决方案1】:

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

    当有结果时,您会在表 RESULT_TAB 中看到几行,其中字段 FIELDVALUE 包含实际的客户名称(因为您在字段 NAME1 中搜索 - 更改搜索字段并且结果也会更改)和CUSTOMERNUMBER 包含客户编号。

    如果结果多于MAX_CNT, 中设置的结果,您将在结果集的最后一行中看到消息类型I、ID FN、编号063´(用您的登录语言显示一条消息,告诉您有超过 X 个结果)。

    如果您的搜索根本没有产生任何结果,结构 RETURN 将包含一条警告消息(消息类型 W,ID FN,编号 802)和表中的单行 @987654336 @ 应包含另一个警告消息类型 W、ID FN、编号 065 和以您的登录语言显示的说明性消息文本,告诉您在搜索中找不到帐户。

    如果您想知道如何阅读IRfcTable,您可以遍历其内容。它本质上是一个 IRfcStructure 项的列表。

    foreach(IRfcStructure row in returnTable) 
    {
         var customerNumber = row.GetString("CUSTOMERNUMBER");
    }
    

    【讨论】:

    • 是否可以调用带有 CUSTOMERNUMBER 列表的 BAPI 并接收回客户的所有详细信息(客户列表)?
    • 这不太可能。通常,SAP BAPI 要么提供基于某些搜索参数的基本列表,要么提供单个对象的详细信息。
    猜你喜欢
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-20
    相关资源
    最近更新 更多