How to resolve ASSERTION_FAILED error when you register the odata service expose
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.
![](https://user-images.githubusercontent.com/5669954/57507475-8399d780-7331-11e9-86e6-2a8396b4eb0e.png)
Keywords
ASSERTION_FAILED, @OData.publish
Root cause
If you debug in the backend, you can find the exception is raised in line 9.
![](https://user-images.githubusercontent.com/5669954/57507472-8268aa80-7331-11e9-8031-a3de529323c1.png)
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.
![](https://user-images.githubusercontent.com/5669954/57507473-83014100-7331-11e9-8454-4379762ed409.png)
这样做的目的是确保最后用于生成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:44354/sap/opu/odata/sap/Z_C_SERVICE_ORDER_VIEW_CDS/Z_C_Service_Order_View(order_guid=guid’00163EA7-2000-1ED2-85EF-EFADF195A1B2’)
![](https://user-images.githubusercontent.com/5669954/57507474-83014100-7331-11e9-91f4-5216f6680b40.png)
![](https://user-images.githubusercontent.com/5669954/61616089-2a87e180-ac9a-11e9-861d-c29c2cf897af.png)
相关文章
- Error: A JNI error has occurred, please check your installation and try again解决[通俗易懂]
- error: failed to push some refs to ‘git@gitee.com:xxx/xxx.git’ 问题 解决办法
- 解决Error response from daemon: oci runtime error: container_linux.go:247: starting container process「
- AlphAction编译不通过问题:error: command ‘:/home/yst/cudas/cuda-10.0/bin/nvcc‘ failed with exit status 1「建议收
- MySQL Error number: 3791; Symbol: ER_RPL_ENCRYPTION_FAILED_TO_STORE_KEY; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: 3792; Symbol: ER_RPL_ENCRYPTION_FAILED_TO_REMOVE_KEY; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: 3801; Symbol: ER_RPL_ENCRYPTION_FAILED_TO_ENCRYPT; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-010053; Symbol: ER_SCHEDULER_STOPPING_FAILED_TO_CREATE_WORKER; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-010170; Symbol: ER_PERFSCHEMA_INIT_FAILED; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-010401; Symbol: ER_NDB_INFO_FAILED_TO_INIT_NDBINFO; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-010608; Symbol: ER_RPL_ERROR_WRITING_RELAY_LOG_CONFIGURATION; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-010900; Symbol: ER_FAILED_TO_FIND_DL_ENTRY; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-010976; Symbol: ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP_HASH; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-010979; Symbol: ER_FAILED_TO_APPLY_RESOURCE_GROUP_CONTROLLER; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011036; Symbol: ER_FAILED_TO_CREATE_CLONE_HANDLER; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011169; Symbol: ER_SEMISYNC_FAILED_REGISTER_SLAVE_TO_RECEIVER; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011224; Symbol: ER_AUDIT_LOG_FILTER_FAILED_TO_READ_TABLE; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011247; Symbol: ER_SHA_PWD_FAILED_TO_GENERATE_MULTI_ROUND_HASH; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011335; Symbol: ER_XPLUGIN_FAILED_TO_GET_SECURITY_CTX; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011365; Symbol: ER_KEYRING_FAILED_TO_GET_FILE_STAT; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011396; Symbol: ER_KEYRING_OKV_FAILED_TO_RETRIEVE_KEY_SIGNATURE; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011465; Symbol: ER_GRP_RPL_ERROR_FETCHING_GTID_SET; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011532; Symbol: ER_GRP_RPL_RESET_APPLIER_MODULE_LOGS_ERROR; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011556; Symbol: ER_GRP_RPL_NOTIFY_CERTIFICATION_OUTCOME_FAILED; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011611; Symbol: ER_GRP_RPL_WRITE_TO_BINLOG_CACHE_FAILED; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011664; Symbol: ER_GRP_RPL_FAILED_TO_UNREGISTER_BINLOG_STATE_OBSERVER; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011669; Symbol: ER_GRP_RPL_FAILED_TO_INIT_APPLIER_MODULE; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011740; Symbol: ER_LDAP_AUTH_FAILED_TO_CREATE_OR_GET_CONNECTION; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-013155; Symbol: ER_PLUGIN_FAILED_TO_OPEN_TABLE; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-013212; Symbol: ER_GRP_RPL_CONFIGURATION_ACTION_ERROR; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-013728; Symbol: ER_IB_WRN_FAILED_TO_ACQUIRE_SERVICE; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-013937; Symbol: ER_RES_GRP_FAILED_TO_SWITCH_RESOURCE_GROUP; SQLSTATE: HY000 报错 故障修复 远程处理
- 解决MySQL中常见的Error问题(mysql中error)