SAP Business One语义层视图公开-导航属性,QueryService,SL JS Ext。

2020-08-21 21:09发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我们正在尝试从直接部署在HANA 1.0 XS Engine中的后端(xsjs,计算视图,xsodata等)转移到SAP Business One中,并将所有内容(或至少其中的大部分内容)保留在SAP Business One中。 我正在更仔细地查看"语义层"视图的"曝光",并且有几个问题:

  1. 我可以为通过SAP B1语义层公开的计算视图定义导航属性吗? 我经常在xsodata中使用它。 使用?$ expand = xxx odata服务参数将更多实体链接在一起并在一个http调用中加载一堆数据非常有用。
  2. 作为替代方法,是使用QueryService,是否可以在公开的语义层视图上使用它? 我似乎无法使其正常工作。
  3. SL JavaScript扩展可以使用通过SAP B1语义层公开的视图吗?

谢谢

OndřejNekvinda

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我们正在尝试从直接部署在HANA 1.0 XS Engine中的后端(xsjs,计算视图,xsodata等)转移到SAP Business One中,并将所有内容(或至少其中的大部分内容)保留在SAP Business One中。 我正在更仔细地查看"语义层"视图的"曝光",并且有几个问题:

  1. 我可以为通过SAP B1语义层公开的计算视图定义导航属性吗? 我经常在xsodata中使用它。 使用?$ expand = xxx odata服务参数将更多实体链接在一起并在一个http调用中加载一堆数据非常有用。
  2. 作为替代方法,是使用QueryService,是否可以在公开的语义层视图上使用它? 我似乎无法使其正常工作。
  3. SL JavaScript扩展可以使用通过SAP B1语义层公开的视图吗?

谢谢

OndřejNekvinda

付费偷看设置
发送
3条回答
四川大学会员
1楼 · 2020-08-21 22:04.采纳回答

嗨Ondrej,

让我尝试回答您的问题:

1。 我不确定您是什么意思。
服务层文档部分" 3.8.7.2使用查询选项查询视图"。
Expand用于特定实体的过滤,但是我看不到 可以应用于语义层的视图部分,因为我们没有要扩展的实体。

2。 我正在内部检查,请尽快通知您。

3。 不支持-我们无法从SL脚本引擎调用语义层视图。
如果您认为此主题对您很重要,请在对B1的持续影响并在此处分享,以便其他合作伙伴可以投票。

希望它会有所帮助,
特立尼达。

2楼-- · 2020-08-21 21:56
< p>嗨,

第1点的示例

如果我们想通过标准实体获取销售订单的抬头行和单据行,则可以通过一次SL调用轻松完成。 现在,由于某种原因,我们不得不在标题和/或文档行中使用计算列。 我将为标头部署一个自定义计算视图,为SAP B1的文档行部署另一个自定义计算视图,并将其公开。 我仍然希望能够在一个Service Layer调用中查询标题和文档行(从已部署的计算视图中),例如:

 SL_URL/mySalesOrderView(1234)?$ expand = mySalesOrderLinesView 

在xsodata中,我可以通过具有关联的键链接自定义视图,并在xsodata文件中导航参数,然后执行此操作。 因此,问题是通过B1语义层公开的视图是否具有相同的可能性。

当学会了学习
3楼-- · 2020-08-21 22:05

嗨Ondrej,

您的问题还有更多答案。

1。 由于以下原因,不支持从QueryOptions调用语义层视图:

a。 视图没有键,因此将视图公开为一个实体。

b。 无法定义元数据中两个视图之间的导航关系,因此很难支持扩展。

此处的建议是基于mySalesOrderView和mySalesOrderLinesView创建第三个视图。 然后公开第三个视图,并对实列而不是虚拟键进行过滤条件。

2。 您可以作为以下示例从脚本引擎运行一些查询,这是唯一可用的选项:

 var queryOption =" $ select = CardName,CardCode&$ filter = contains(CardCode,'c1')&  $ top = 5&$ orderby = CardCode";  var slContext = new ServiceLayerContext();
 var retCaseSensitive = slContext.BusinessPartners.query(queryOption);
 var retCaseInsensitive = slContext.query(" BusinessPartners",queryOption,true); var retCaseSensitive = slContext.BusinessPartners.query(queryOption);
 var retCaseInsensitive = slContext.query(" BusinessPartners",queryOption,true); 

3。 我们无法从SL脚本引擎调用语义层视图。
如果您认为本主题对您很重要,请在对B1的持续影响中创建请求 并在此处分享它,以便其他合作伙伴可以投票。

希望它对
特立尼达有帮助。

一周热门 更多>