专栏首页Jerry的SAP技术分享How to resolve ASSERTION_FAILED error when you register the odata service expose

How to resolve ASSERTION_FAILED error when you register the odata service expose

版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.blog.csdn.net/article/details/90060555

Description

When you try to register an Odata service exposed by a CDS view in tcode /IWFND/MAINT_SERVICE, you meet with runtime error ASSERTION_FAILED as displayed in picture below.

Keywords

ASSERTION_FAILED, @OData.publish

Root cause

If you debug in the backend, you can find the exception is raised in line 9.

The field causing this exception, “STAT”, does not come from the consumption view itself but from the foreign view zorder_sys_status. When we comment out line 22~24, the service registration could successfully be done.

Solution

在当前view上重新创建一个新的consumption view.

这样做的目的是确保最后用于生成odata service的consumption view A, 其字段全部来自 view B. 比较correction之前的实现: consumption view A,其字段部分来自view B, 部分来自view C, 这种scenario并不被SADL 框架支持。 original view:

@AbapCatalog.sqlViewName: 'ziorder'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'order consumption view'

define view Z_i_Order_View as select from Z_C_Order_Item
inner join Zorder_Sys_Status as _sys_status
on Z_C_Order_Item.guid = _sys_status.guid
{
   key Z_C_Order_Item.guid as order_guid,
   Z_C_Order_Item.object_id,
   Z_C_Order_Item.description,
   _sys_status.stat,
   _sys_status.txt04,
   _sys_status.txt30,
   @ObjectModel.association.type: [#TO_COMPOSITION_CHILD]
   Z_C_Order_Item._Item
}

new created consumption view:

@AbapCatalog.sqlViewName: 'zcorderview'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'service order consumption view'

@OData.publish: true
@ObjectModel: {
   type: #CONSUMPTION,
   compositionRoot,
   createEnabled,  
   deleteEnabled,
   updateEnabled
}

define view Z_C_Service_Order_View as select from Z_i_Order_View {
  key Z_i_Order_View.order_guid as order_guid,
  Z_i_Order_View.object_id,
  Z_i_Order_View.description,
  Z_i_Order_View.stat,
  Z_i_Order_View.txt04,
  Z_i_Order_View.txt30,
  @ObjectModel.association.type: [#TO_COMPOSITION_CHILD]
  Z_i_Order_View._Item

}

After correction it works with the following url: https://jerry.sap.corp:44354/sap/opu/odata/sap/Z_C_SERVICE_ORDER_VIEW_CDS/Z_C_Service_Order_View(order_guid=guid’00163EA7-2000-1ED2-85EF-EFADF195A1B2’)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Jerry 2016年5月20日到5月23日的学习笔记

    来自己debug 取数逻辑。通过这个练习,加深了CDS里query view和一般的CDS view的区别:

    Jerry Wang
  • 如何在SAP云平台ABAP编程环境里把CDS view暴露成OData服务

    Jerry 2016年在学习SAP CDS view时,曾经写过一个CDS view的自学系列,其中有一篇提到了一个很方便的注解:

    Jerry Wang
  • Integer的装箱和拆箱(Boxing and unBoxing)的一个性能损失的例子

    Jerry Wang
  • 初学js钻太深,不太好

    其实我个人觉得新手不太应该追求彻底的学透每一个知识点。因为初学的时候,钻的太深并不太利于对JS有一个整体的理解。反而有可能钻牛角尖。但这种方法和心态却是必须有的...

    web前端教室
  • 【PAT乙级】A + B和C

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    喜欢ctrl的cxk
  • Navicat的详细教程{收藏}

    Navicat 是一套快速、可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Na...

    框架师
  • 一道有趣的面试题

      前两天在刷leetcode的时候,遇到了一题Implement Rand10() Using Rand7(),rand7()可以给你等概率返回1-7的任意一...

    xindoo
  • 【蓝桥杯系列】第一节 C的基本用法

    置顶编程范收获更多热门编程快讯 大家好,最近很多小伙伴向我反应小编!我参加了蓝桥杯但是我连那是什么都不知道,我该怎么训练?是不是在网站刷题就可以啊? 在这里我要...

    编程范 源代码公司
  • c# 调用win32模拟点击的两种方法

    第一种 using System; using System.Collections.Generic; using System.ComponentModel;...

    lpxxn
  • 剑指offer(51-60)题解

    显然我们可以想到通过遍历的方式,但是一旦出现环,那么我们是遍历不完的,所以我们必须添加截止条件,每次我们遍历一个元素时就将他的值存入list之中,这样我们就...

    萌萌哒的瓤瓤

扫码关注云+社区

领取腾讯云代金券