0

我是 CDS 的新手,我正在尝试制作我的第一个视图。

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

关联 _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
}
4

2 回答 2

1

问题是:

BPOSB表中FRET的类型为 NUMC(6)

EBELP表中EKPO的类型为 NUMC( 5 )

根据类型比较矩阵,您应该在 RHS 和 LHS 类型长度之间进行精确匹配。

在此处输入图像描述

根据关联条款中的条件规则ON

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

所以你不能既不CAST( num1 AS NUMC( N ) ),也不SUBSTRING。RHS 和 LHS 操作数均不适用。

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

于 2020-12-23T10:12:53.280 回答
0

我终于做到了。

我做了两个 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, // <--
... 

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

于 2020-12-28T15:50:10.637 回答