SAP CP-CAPM-基于带有输入参数的HANA计算视图的CDS实体/OData

2020-08-27 15:15发布

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

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


专家您好,

在我们的项目中,我们尝试访问现有的HANA DB-具有输入参数的"计算"视图,并希望将其公开为OData服务。 这会触发错误:

" ZTEST:ZTEST1"的参数不足,未指定的参数" IP_1" [1310483] 

第二种方法-试图在同一视图上创建CDS SQL Select,但是不确定如何将CDS参数链接到HANA输入参数:

使用参数IP_1_CDS查看CV_TEST_VIEW:日期
    从ZTEST1中选择{
       COL1,
       COL2
    }其中'PLACEHOLDER'=('$$ IP_1 $$',:IP_1_CDS)); 

第三种方法-试图在同一目录上创建HANA表函数和CDS SQL Select,但是仍然失败。

使用参数IP_1_CDS查看CV_TEST_VIEW2:日期
    从ZTEST_TABLE_FN_1(:IP_1_CDS)中选择{
       COL1,
       COL2
    }; 

HANA计算视图没有任何输入参数时,上述所有方法都可以正常工作。

是否可以通过传递输入参数来访问此类视图? 解决该情况的任何帮助将不胜感激。

请注意,HANA计算视图包含复杂的逻辑,在CDS视图中不容易重新实现。

此致

Chathia。

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

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


专家您好,

在我们的项目中,我们尝试访问现有的HANA DB-具有输入参数的"计算"视图,并希望将其公开为OData服务。 这会触发错误:

" ZTEST:ZTEST1"的参数不足,未指定的参数" IP_1" [1310483] 

第二种方法-试图在同一视图上创建CDS SQL Select,但是不确定如何将CDS参数链接到HANA输入参数:

使用参数IP_1_CDS查看CV_TEST_VIEW:日期
    从ZTEST1中选择{
       COL1,
       COL2
    }其中'PLACEHOLDER'=('$$ IP_1 $$',:IP_1_CDS)); 

第三种方法-试图在同一目录上创建HANA表函数和CDS SQL Select,但是仍然失败。

使用参数IP_1_CDS查看CV_TEST_VIEW2:日期
    从ZTEST_TABLE_FN_1(:IP_1_CDS)中选择{
       COL1,
       COL2
    }; 

HANA计算视图没有任何输入参数时,上述所有方法都可以正常工作。

是否可以通过传递输入参数来访问此类视图? 解决该情况的任何帮助将不胜感激。

请注意,HANA计算视图包含复杂的逻辑,在CDS视图中不容易重新实现。

此致

Chathia。

付费偷看设置
发送
2条回答
小熊yu生菜
1楼 · 2020-08-27 16:18.采纳回答

为了所有人的利益发布有效的解决方案。 (感谢 Elena Oresharova 的输入。)

1。 根据需要定义同义词(在我们的方案中,需要跨容器访问)

2。 使用相同的签名和必填字段(如下所示)定义"计算视图"

data-model.cds

 @ cds.persistence.exists
 实体Bookinfo_CalcView(IP_KPI_DATE:日期){
   密钥ID:整数;
       book_author_info:字符串(100);
   } 

3。 如下定义服务:

cat-service.cds

使用'../db/data-model'中的Bookinfo_CalcView;

 服务ip_test {
   @readonly实体Bookinfo_CalcView_SRV(INPUT_DATE:日期)为
      从Bookinfo_CalcView(IP_KPI_DATE::INPUT_DATE)中选择{*};
 } 

4。 以上概念应该可以理想地工作。 但是,在CDS编译器中发现一个错误,SAP暂时为此提供了一种解决方法。 在package.json中(在srv文件夹中)添加以下行-本地化选项不起作用(我们现在不使用它)

"功能":{
    "本地化":false
  } 

package.json(在srv文件夹中)

" cds":{
    "要求":{
      "D b": {
        " kind":" hana",
        " model":" gen/csn.json"
       }
   },
 "特征": {
    "本地化":false
  } 

此致

Chathia。

jovirus
2楼-- · 2020-08-27 16:17

可能的解决方案是尝试在CAP中为现有视图声明所谓的门面实体,并用@ cds.persistence.exists注释进行注释。

下面是一个示例-如果我们已有视图:

查看DATA_MODEL_BOOKSHOP_BOOKINFO(在作者nvarchar(50)中)AS SELECT
   ID,
   '书:'||  THE_TITLE ||  '和作者'||  :AUTHOR AS BOOK_AUTHOR_INFO
 FROM DATA_MODEL_BOOKSHOP_BOOKS; 

在cds模型中,此视图的外观实体将如下所示(它应与现有数据库对象的签名匹配):

命名空间data.model;
 上下文书店{
   @ cds.persistence.exists
   实体Bookinfo(作者:String(50)){
     密钥ID:整数;
     book_author_info:字符串(100);
   }
 } 

一周热门 更多>