2

这个问题基本上是一个“我没有错吗?” 或“就是这样”。

我正在使用以下代码登录我的 SAP 系统。为 SNC 配置配置文件

Backend = new BackendConfig();
RfcDestinationManager.RegisterDestinationConfiguration(Backend);
SapRfcDestination = RfcDestinationManager.GetDestination("P38");

SapRap = SapRfcDestination.Repository;

// Create the function for MD04
BapiMD04 = SapRap.CreateFunction("MD_STOCK_REQUIREMENTS_LIST_API");

完成以上所有操作大约需要 30 秒。

使用 SAP 和 Login Pad 以正常方式登录 SAP 需要 4 秒。

使用 SAP 连接器总是那么慢还是我做错了什么?

编辑 1:BackendConfig 类

public class BackendConfig : IDestinationConfiguration
{
    public RfcConfigParameters GetParameters(String destinationName)
    {
        if ("P38".Equals(destinationName))
        {
            RfcConfigParameters parms = new RfcConfigParameters();
            parms.Add(RfcConfigParameters.AppServerHost, "SAPP38.Danfoss.net");
            parms.Add(RfcConfigParameters.SystemNumber, "86");
            parms.Add(RfcConfigParameters.SncMode, "1");
            parms.Add(RfcConfigParameters.SncPartnerName, "p:SAPServiceP38@danfoss.net");
            // parms.Add(RfcConfigParameters.User, "AUTO0101");
            // parms.Add(RfcConfigParameters.Password, "anyth1ng");
            parms.Add(RfcConfigParameters.Client, "010");
            parms.Add(RfcConfigParameters.Language, "EN");
            parms.Add(RfcConfigParameters.PoolSize, "5");
            parms.Add(RfcConfigParameters.MaxPoolSize, "10");
            parms.Add(RfcConfigParameters.IdleTimeout, "600");
            return parms;
        }

        else if ("T38".Equals(destinationName))
        {
            RfcConfigParameters parms = new RfcConfigParameters();
            parms.Add(RfcConfigParameters.AppServerHost, "blahblahblah");
            parms.Add(RfcConfigParameters.SystemNumber, "81");
            parms.Add(RfcConfigParameters.SncMode, "1");
            parms.Add(RfcConfigParameters.SncPartnerName, "blahblahblah");
            parms.Add(RfcConfigParameters.Client, "010");
            parms.Add(RfcConfigParameters.Language, "EN");
            parms.Add(RfcConfigParameters.PoolSize, "5");
            parms.Add(RfcConfigParameters.MaxPoolSize, "10");
            parms.Add(RfcConfigParameters.IdleTimeout, "600");
            return parms;
        }
        else return null;
    }
    // The following two are not used in this example:
    public bool ChangeEventsSupported()
    {
        return false;
    }

    public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged;
}
4

1 回答 1

1

你的代码看起来不错。

根据我对 SAP 连接器的体验,初始连接总是很慢 - 不仅仅是通过 SAP 客户端登录。随着连接的建立,对连接器的后续调用要快得多。

30秒似乎有点多。查看:

  • 您指定的服务器没有 DNS 查找问题

  • 您拥有来自 SAP Service Marketplace 的最新版本的 SAP 连接器

于 2014-02-14T09:11:12.113 回答