公开含参数的 CDS 视图作为 OData服务调用方法

在SAP系统中,当你通过OData服务暴露带有参数的CDS视图时,可以通过几种方式传递参数。这里主要介绍如何使用URL查询选项(如$filter)和直接在URL路径中指定参数来传递参数。

使用 $filter 传递参数

对于大多数情况,特别是当你想根据某些条件过滤数据时,可以使用 OData 的 $filter 查询选项来传递参数。例如,假设你有一个名为 Z_Example_CDS_View_With_Parameters 的 CDS 视图,并且它定义了一个参数 p_ebeln,你可以这样构建请求:

/sap/opu/odata/sap/Z_Example_CDS_View_With_Parameters?$filter=EBELN eq 'your_purchase_document_number'

在这个例子中,EBELN 是你在CDS视图中选择列表中的字段名,而 'your_purchase_document_number' 是你想过滤的具体值。

直接在 URL 路径中传递参数

如果CDS视图被设计为接受路径参数(较少见的情况),你可以直接在URL路径中传递参数。然而,在大多数情况下,CDS视图的参数是通过查询选项传递的,而不是作为路径的一部分。

要使用参数 调用正确的实体集,请执行以下操作:

  1. 首先获取元数据,<URL>\YY1_<ODATA-SERVICE>\$metadata
  2. 在元数据中,找到您的 EntitySet 并检查其实体类型,如下所示: 
     <EntitySet Name="YY1_<NAME>" EntityType="YY1_<ODATASERVICE>.YY1_<NAME>Parameters" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:pageable="false" sap:content-version="1"/>
  3. 然后找到 <EntityType Name="YY1_<NAME>Parameters" ,如下所示
    <EntityType Name="YY1_<NAME>Parameters" sap:semantic="parameters" sap:content-version="1">
                    <键值>
                        <PropertyRef Name="P_1"/>
                        <PropertyRef Name="P_2"/>
                    </代码>
  4. 在参数 EntityType 下,找到以下内容:
     <NavigationProperty Name="<RESULTSNAME>"。。。/>
                </EntityType>
  5. 现在,用户可以按 https://<URL>/sap/opu/odata/sap/YY1_<ODATA-SERVICE>/YY1_<NAME>(P_1='<WHATEVER-VALUE>',P_2='<WHATEVER-VALUE>')/<RESULTNAME>
    1. <RESULTNAME>:无论名称来自步骤 4
    2. YY1_<NAME> 是步骤 2 中的 EntitySet 名称
    3. P_1、P_2:步骤 3 中的参数名称,如果参数列表有 X 个参数,则需要列出它们
  6. 注意:如果结果很大,我们可以添加 $top=1 以进行测试,例如:
    https://<URL>/sap/opu/odata/sap/YY1_<ODATA-SERVICE>/YY1_<NAME>(P_1='<WHATEVER-VALUE>',P_2='<WHATEVER-VALUE>')/<RESULTNAME>?$top=1参考文献:https://me.sap.com/notes/2600276/1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值