如何在 Eclipse WebApp 预览中的 SAPUI5 应用程序 运行 中定义 SAP mandant/client 编号?

How to define the SAP mandant/client number in an SAPUI5 application running inside Eclipse WebApp preview?

使用 SAPUI5 的 Eclipse 开发工具,可以 运行 WebApp 预览模式下的 SAPUI5 应用程序。一切正常,期待一分。

默认情况下,OData 服务中使用的客户端数据始终为“100”。 我假设使用的客户端是用于存储库设置的客户端。

但是为了测试,我必须使用不同的客户端 (200),因为要维护测试数据。

从 SAPUI5 1.26.9 和相应的开发工具开始,它似乎可以工作,在 SAP NetWeaver Gateway 定义默认客户端,但在升级到 1 之后。28.x 大多数时候使用客户端 100。

现在我正在搜索该问题的文档,但找不到任何内容。一个问题当然是搜索词 "client" 根本没有帮助。

我也会避免在某处硬编码任何客户端号码,因为在真实系统中,登录的客户端将被自动使用。

但在 WebApp 预览版中,我不会被要求提供客户端。

也许这是问这个问题的错误地方?那样的话我就删了

您可以在 URL 和 link 中使用一个参数来检索您的 serviceUrl 吗?
也许您可以有一个 URL 参数,并且基于该参数,您可以为 URL 提供 2 个服务,其中一个硬编码值为客户端 200,而另一个没有任何内容。 您可以检索参数:

jQuery.sap.getUriParameters().get("test-mode") === "true";

要在 OData 服务定义中对客户端进行硬编码:

var sUrl = "proxy/protocol/server:port/pathToService?sap-client=600";
var oModel = new sap.ui.model.odata.ODataModel(sUrl,true)

您可以使用 sap-client GET 参数。当您使用 SAP Portal 或 SAPGUI 时,这个将自动传递给您的应用程序。

ODataModel 将其传递给自己的数据服务。

当您调用模型 object 时,您可以将一些 header 变量传递给 'point' 到正确的 sap 客户端。

    // Set the client header variable
    var oHeaders = {'sap-client': '120'};
    var bCSRF = "true";
    var oModel = sap.ui.model.odata.ODataModel(serviceURL, true, "user", "pass", oHeaders, bCSRF, false, false, "", false);
    sap.ui.getCore().getModel(oModel, 'gAppModel')

您可以使用像 Postman 这样的 REST 客户端测试您需要哪些 header 个变量。

可以在 API - UI5 OData Model

中找到 OData 构造函数的详细信息