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

Abap BPOSB和EBELP在CDS关联中没有兼容的类型,abap,cds,Abap,Cds,我对CD还不熟悉,我正在尝试我的第一个观点 问题是,当我尝试以下代码时,我收到了错误: 关联采购订单:BPOSB和EBELP没有兼容的 类型 有没有可能对协会的任何领域进行投票以使其发挥作用 提前谢谢 @AbapCatalog.sqlViewName: 'YMM_VFRET' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #CH

我对CD还不熟悉,我正在尝试我的第一个观点

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

关联采购订单: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
}
问题是:

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

EKPO
表中的
EBELP
具有NUMC类型(5

根据标准,您应该在RHS和LHS类型长度之间进行精确匹配

根据本协会条款中的for条件:

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

因此,您既不能执行
强制转换(num1作为NUMC(N))
,也不能执行
子字符串
。既不适用于RHS操作数,也不适用于LHS操作数

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

我终于做到了

我制作了两张CD

第一个具有所有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, // <--
... 
将视图YMM\u FRET\u 0定义为从FRET中选择{
关键命令,
关键BTYPB,
基本法,

键CAST(右(BPOSB,5)为ABAP.NUMC(5))为BPOSB,//您可以在数据库表选择的顶部添加一层CDS视图,将NUMC转换为char6以具有计算列,将该视图与计算列相关联