使用CDS关联中的问题

2020-08-27 10:34发布

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

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


专家们,

在我最近对SAPTechEd的访问中,我发现了一个有趣的读物,它解释了如何创建事务性FIORI应用程序以及使用CDS作为数据提供者。 创建的CDS视图用作数据源,并通过覆盖MPC_EXT的网关方法管理事务行为,并将特定实体设置为 sap:creatable 。
我尝试通过Flight Table复制类似的操作。 我在7.50,SP-0011。

我的 CDS视图如下所示在代码部分

注意-当我遵循通过ADT的关联路径时,CDS视图将提供正确的记录。
我通过将CDS映射为参考数据源来创建网关服务。

现在,我使用内置的网关服务创建了ListReport类型的FIORI元素应用程序。

应用程序描述符文件被视为从属实体-zcds_booking_details和导航已正确识别。

在执行基本使用量视图(即ZCDS_FLIGHT_DETAILS)时,应用程序已启动并正在运行。 与该视图相关联,未触发ZCDS_BOOKING_DETAILS并且未获取结果。



网关中的错误是-未知实体'ZSRV_FLIGHT_BOOKING〜zcds_booking_details'类型为'SADL'



应用程序日志显示3条连续的消息。 这2个都很有趣

在调试框架时,我发现init_transaction()方法失败,并且正在引发CX_SADL_CONTRACT_VIOLATION。

我仍然不知道为什么出现"找不到实体"错误。 另外,我想知道是否需要像@ObjectModel这样的任何事务处理注释。 我所引用的文档(在TechEd上机实践课程中提供)没有类似的内容。 我在这里想念什么?

 1。  ZCDS_FLIGHT_DETAILS是应用程序的使用情况视图


 @ AbapCatalog.sqlViewName:'zv_flight_info'
 @ AbapCatalog.compiler.compareFilter:是
 @ AbapCatalog.preserveKey:是
 @ AccessControl.authorizationCheck:#NOT_REQUIRED
 @ EndUserText.label:"航班信息显示的CDS视图"
 @ Search.searchable:是
 @ UI.headerInfo.typeName:"飞行"
 @ UI.headerInfo.typeNamePlural:'航班'
 定义视图zcds_flight_details
                    
 从zv_flight_basic中选择基本
    
 在$ projection.carrid = _sbook.carrid上将[0 .. *]与_sbook关联到zcds_booking_details
                                                         $ projection.connid = _sbook.connid和
                                                         $ projection.fldate = _sbook.fldate
    
 {
       //基本
//关键要求
        @ UI.lineItem:[{position:10}]
        @ UI.identification:[{位置:10}]
        @ Search.defaultSearchElement:true
        @ Search.fuzzinessThreshold:0.7
        @ Search.ranking:#HIGH
        @ UI.selectionField:[{位置:10}]
        香芹籽
        @ UI.lineItem:[{position:20}]
        @ UI.identification:[{position:20}]
        @ Search.defaultSearchElement:true
        @ Search.fuzzinessThreshold:0.7
        @ Search.ranking:#MEDIUM
        @ UI.selectionField:[{位置:20}]
        关键时刻
        @ UI.lineItem:[{position:30}]
        @ UI.identification:[{position:30}]
        @ UI.selectionField:[{位置:30}]
        关键时刻
       
        @ UI.lineItem:[{position:40}]
        @ UI.identification:[{position:40}]
          价钱,
        @ UI.lineItem:[{position:50}]
        @ UI.identification:[{position:50}]
          货币,
          平面型
        @ UI.lineItem:[{位置:60,
                       标签:"经济舱可用"}]
        @ UI.identification:[{position:60}]
          Economy_sa,
         
        @ UI.lineItem:[{位置:70,
                       标签:"可提供商务座椅"}]
        @ UI.identification:[{位置:70}]
          business_sa,
         
        @ UI.lineItem:[{位置:80,
                       标签:"可用的头等舱座位"}]
        @ UI.identification:[{位置:80}]
          firstclass_sa,
          countryfr,
          来自
          airpfrom,
          countryto,
          cityto,
          airpto,
          持续时间
          deptime,
          到达时间
          距离,
          茫然
          字型
          期,
        
       /*关联*/
//_sflight [inner],
         _sbook [内部]
        
 }




 2.我的关联视图-ZCDS_BOOKING_DETAILS


 @ AbapCatalog.sqlViewName:'zv_booking_det'
 @ AbapCatalog.compiler.compareFilter:是
 @ AbapCatalog.preserveKey:是
 @ AccessControl.authorizationCheck:#NOT_REQUIRED
 @ EndUserText.label:"预订详细信息CDS"
 定义视图zcds_booking_details
   
 选自sbook {
    
    //预订
//关键要求
     @ UI.hidden:是
     香芹籽
     @ UI.hidden:是
     关键时刻
     @ UI.hidden:是
     关键时刻
    
     @ UI.lineItem.position:10
       书本
    
     @ UI.lineItem.position:20
       习惯,
    
     @ UI.lineItem.position:30
       保管类型
    
     @ UI.lineItem.position:40
       吸烟者
       行李重量
       wunit
       发票,
       类,
       甲草胺
       forcurkey,
       loccuram,
       loccurkey,
       订购日期,
       计数器,
       agencynum,
       取消,
       保留,
     @ UI.lineItem.position:50
       密码,
       密码
       出生
 }
 

(32.8 kB)

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

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


专家们,

在我最近对SAPTechEd的访问中,我发现了一个有趣的读物,它解释了如何创建事务性FIORI应用程序以及使用CDS作为数据提供者。 创建的CDS视图用作数据源,并通过覆盖MPC_EXT的网关方法管理事务行为,并将特定实体设置为 sap:creatable 。
我尝试通过Flight Table复制类似的操作。 我在7.50,SP-0011。

我的 CDS视图如下所示在代码部分

注意-当我遵循通过ADT的关联路径时,CDS视图将提供正确的记录。
我通过将CDS映射为参考数据源来创建网关服务。

现在,我使用内置的网关服务创建了ListReport类型的FIORI元素应用程序。

应用程序描述符文件被视为从属实体-zcds_booking_details和导航已正确识别。

在执行基本使用量视图(即ZCDS_FLIGHT_DETAILS)时,应用程序已启动并正在运行。 与该视图相关联,未触发ZCDS_BOOKING_DETAILS并且未获取结果。



网关中的错误是-未知实体'ZSRV_FLIGHT_BOOKING〜zcds_booking_details'类型为'SADL'



应用程序日志显示3条连续的消息。 这2个都很有趣

在调试框架时,我发现init_transaction()方法失败,并且正在引发CX_SADL_CONTRACT_VIOLATION。

我仍然不知道为什么出现"找不到实体"错误。 另外,我想知道是否需要像@ObjectModel这样的任何事务处理注释。 我所引用的文档(在TechEd上机实践课程中提供)没有类似的内容。 我在这里想念什么?

 1。  ZCDS_FLIGHT_DETAILS是应用程序的使用情况视图


 @ AbapCatalog.sqlViewName:'zv_flight_info'
 @ AbapCatalog.compiler.compareFilter:是
 @ AbapCatalog.preserveKey:是
 @ AccessControl.authorizationCheck:#NOT_REQUIRED
 @ EndUserText.label:"航班信息显示的CDS视图"
 @ Search.searchable:是
 @ UI.headerInfo.typeName:"飞行"
 @ UI.headerInfo.typeNamePlural:'航班'
 定义视图zcds_flight_details
                    
 从zv_flight_basic中选择基本
    
 在$ projection.carrid = _sbook.carrid上将[0 .. *]与_sbook关联到zcds_booking_details
                                                         $ projection.connid = _sbook.connid和
                                                         $ projection.fldate = _sbook.fldate
    
 {
       //基本
//关键要求
        @ UI.lineItem:[{position:10}]
        @ UI.identification:[{位置:10}]
        @ Search.defaultSearchElement:true
        @ Search.fuzzinessThreshold:0.7
        @ Search.ranking:#HIGH
        @ UI.selectionField:[{位置:10}]
        香芹籽
        @ UI.lineItem:[{position:20}]
        @ UI.identification:[{position:20}]
        @ Search.defaultSearchElement:true
        @ Search.fuzzinessThreshold:0.7
        @ Search.ranking:#MEDIUM
        @ UI.selectionField:[{位置:20}]
        关键时刻
        @ UI.lineItem:[{position:30}]
        @ UI.identification:[{position:30}]
        @ UI.selectionField:[{位置:30}]
        关键时刻
       
        @ UI.lineItem:[{position:40}]
        @ UI.identification:[{position:40}]
          价钱,
        @ UI.lineItem:[{position:50}]
        @ UI.identification:[{position:50}]
          货币,
          平面型
        @ UI.lineItem:[{位置:60,
                       标签:"经济舱可用"}]
        @ UI.identification:[{position:60}]
          Economy_sa,
         
        @ UI.lineItem:[{位置:70,
                       标签:"可提供商务座椅"}]
        @ UI.identification:[{位置:70}]
          business_sa,
         
        @ UI.lineItem:[{位置:80,
                       标签:"可用的头等舱座位"}]
        @ UI.identification:[{位置:80}]
          firstclass_sa,
          countryfr,
          来自
          airpfrom,
          countryto,
          cityto,
          airpto,
          持续时间
          deptime,
          到达时间
          距离,
          茫然
          字型
          期,
        
       /*关联*/
//_sflight [inner],
         _sbook [内部]
        
 }




 2.我的关联视图-ZCDS_BOOKING_DETAILS


 @ AbapCatalog.sqlViewName:'zv_booking_det'
 @ AbapCatalog.compiler.compareFilter:是
 @ AbapCatalog.preserveKey:是
 @ AccessControl.authorizationCheck:#NOT_REQUIRED
 @ EndUserText.label:"预订详细信息CDS"
 定义视图zcds_booking_details
   
 选自sbook {
    
    //预订
//关键要求
     @ UI.hidden:是
     香芹籽
     @ UI.hidden:是
     关键时刻
     @ UI.hidden:是
     关键时刻
    
     @ UI.lineItem.position:10
       书本
    
     @ UI.lineItem.position:20
       习惯,
    
     @ UI.lineItem.position:30
       保管类型
    
     @ UI.lineItem.position:40
       吸烟者
       行李重量
       wunit
       发票,
       类,
       甲草胺
       forcurkey,
       loccuram,
       loccurkey,
       订购日期,
       计数器,
       agencynum,
       取消,
       保留,
     @ UI.lineItem.position:50
       密码,
       密码
       出生
 }
 

(32.8 kB)
付费偷看设置
发送
6条回答
compass1988
1楼 · 2020-08-27 11:04.采纳回答

我试图重现您的问题,但对我来说还是可行的,但是我从SFLLIGHT中选择了数据,因为我不知道zv_flight_basic的定义。

您能分享zv_flight_basic的定义吗?

我在SEGW项目中尝试了以下URL

/sap/opu/odata/SAP/ZTESTRDS_INNER_SRV/zcds_flight_details(carrid ='AA',connid ='0017',fldate = datetime'2019 -06-20T00%3A00%3A00')/to_sbook

它提供以下内容

p>

我为zcds_flight_details使用了以下DDL源代码,在我的情况下,直接从表SFLIGHT中读取。

 @ AbapCatalog.sqlViewName:'zv_flight_info'
 @ AbapCatalog.compiler.compareFilter:是
 @ AbapCatalog.preserveKey:是
 @ AccessControl.authorizationCheck:#NOT_REQUIRED
 @ EndUserText.label:"航班信息显示的CDS视图"
 @ Search.searchable:是
 @ UI.headerInfo.typeName:"飞行"
 @ UI.headerInfo.typeNamePlural:'航班'
 定义视图zcds_flight_details
                    
 从sflight中选择作为基本
    
 在$ projection.carrid = _sbook.carrid上将[0 .. *]与_sbook关联到zcds_booking_details
                                                         $ projection.connid = _sbook.connid和
                                                         $ projection.fldate = _sbook.fldate
    
 {
       //基本
//关键要求
        @ UI.lineItem:[{position:10}]
        @ UI.identification:[{位置:10}]
        @ Search.defaultSearchElement:true
        @ Search.fuzzinessThreshold:0.7
        @ Search.ranking:#HIGH
        @ UI.selectionField:[{位置:10}]
        香芹籽
        @ UI.lineItem:[{position:20}]
        @ UI.identification:[{position:20}]
        @ Search.defaultSearchElement:true
        @ Search.fuzzinessThreshold:0.7
        @ Search.ranking:#MEDIUM
        @ UI.selectionField:[{位置:20}]
        关键时刻
        @ UI.lineItem:[{position:30}]
        @ UI.identification:[{position:30}]
        @ UI.selectionField:[{位置:30}]
        关键时刻
       
        @ UI.lineItem:[{position:40}]
        @ UI.identification:[{position:40}]
          价钱,
        @ UI.lineItem:[{position:50}]
        @ UI.identification:[{position:50}]
          货币,
          平面型
//@ UI.lineItem:[{position:60,
//标签:"可提供经济席位"}]
//@ UI.identification:[{position:60}]
//Economy_sa,
//
//@ UI.lineItem:[{position:70,
//标签:"可提供商务座椅"}]
//@ UI.identification:[{position:70}]
//business_sa,
//
//@ UI.lineItem:[{position:80,
//标签:"头等舱座位可用"}]
//@ UI.identification:[{position:80}]
//firstclass_sa,
//countryfr,
//cityfrom,
//airpfrom,
//countryto,
//cityto,
//airpto,
//持续时间
//deptime,
//arrtime,
//距离
//distid
//fltype,
//期间,
        
       /*关联*/
//_sflight [inner],
         _sbook [内部]
        
 } 
悠然的二货
2楼-- · 2020-08-27 11:17

从SAP NW 7.50开始支持参考数据源项目。

在SAP NW 7.40中,可以使用所谓的映射数据源方法。 在这里,您必须将实体集和关联映射到CDS视图及其关联。

https://help。 sap.com/doc/saphelp_nw751abap/7.51.0/de-DE/82/0b24ce35c745bb9e0fb3a6e8d6dbd4/frameset.htm

但是CDS视图至少需要NW 740 SP05

悠然的二货
3楼-- · 2020-08-27 11:30

我会尝试将字段bookid设为CDS视图ZCDS_BOOKING_DETAILS中的关键字段。

否则,

与zcds_booking_details的关联[0 .. *]与$ projection.carrid = _sbook.carrid上的_sbook关联。
                                                         $ projection.connid = _sbook.connid和
                                                         $ projection.fldate = _sbook.fldate 
DafaDDDa
4楼-- · 2020-08-27 11:31

安德烈,

更改了ZCDS_BOOKING_DETAILS,并将bookid设置为关键字段,但是没有运气!

空代码
5楼-- · 2020-08-27 11:08

您是否尝试过在ADT的数据预览中导航是否起作用?

打个大熊猫
6楼-- · 2020-08-27 11:25

是。 关联可以在ADT中完美运行。
ZCDS_FLIGHT_DETAILS视图



当单击最后一个航班日期为2018-06-0的条目时的关联结果

一周热门 更多>