BPOSB 和 EBELP 在 CDS 关联中没有兼容类型

问题描述

我是 CDS 的新手,我正在尝试第一次观看。

问题是当我尝试以下代码时,我收到错误

Association _Purchase_Order:BPOSB 和 EBELP 没有兼容的 类型。

是否可以对协会的任何领域进行演员表以使其发挥作用?

提前致谢

@AbapCatalog.sqlViewName: 'YMM_VFRET'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Merchandise distribution view'
define view YMM_FRET 
as select from fret as Collective_Purchase
association [1..*] to ekpo as _Stock_Transfer_Order 
on $projection.blnra = _Stock_Transfer_Order.ebeln and $projection.bposa = _Stock_Transfer_Order.ebelp
association [1] to ekpo as _Purchase_Order       
on $projection.blnrb = _Purchase_Order.ebeln and $projection.bposb = _Purchase_Order.ebelp
  {
  key Collective_Purchase.blnrb,key Collective_Purchase.bposb,key Collective_Purchase.blnra,key Collective_Purchase.bposa,_Stock_Transfer_Order,_Purchase_Order
}

解决方法

问题是:

.vjs-matrix .vjs-progress-control:hover .vjs-progress-holder .vjs-load-progress div.vjs-fs-note > div.vjs-fs-note-text-container-above { font-size: 10px; } 表中的

BPOSB 类型为 NUMC(6)

FRET 表中的

EBELP 类型为 NUMC(5)

根据 type comparison matrix,您应该在 RHS 和 LHS 类型长度之间精确匹配。

enter image description here

根据关联的 EKPO 子句中的条件 rules

不能指定路径表达式或其他表达式或函数调用。

因此您既不能执行 ON,也不能执行 CAST( num1 AS NUMC( N ) )。不适用于 RHS 和 LHS 操作数。

除了以另一种方式重建您的视图之外,我在这里看不到任何解决方案。

,

我终于做到了。

我制作了两次 CDS 视图。

第一个包含所有 FRET 字段,但使用 RIGHT 和 CAST 将 BPOSB 和 BPOSA 转换为 NUMC 类型。

DEFINE VIEW YMM_FRET_0 AS SELECT FROM FRET {
KEY MANDT,KEY BTYPB,KEY BLNRB,KEY CAST( RIGHT( BPOSB,5 ) AS ABAP.NUMC( 5 ) ) AS BPOSB,// <-- 
KEY BTYPA,KEY BLNRA,KEY CAST( RIGHT( BPOSA,5 ) AS ABAP.NUMC( 5 ) ) AS BPOSA,// <--
... 

第二个使用第一个视图并解决了问题。