问题描述
我是 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 类型长度之间精确匹配。
根据关联的 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,// <--
...
第二个使用第一个视图并解决了问题。