CDS视图::"未知的列XXXXX"语法错误

2020-09-08 08:55发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我试图学习CDS视图,并...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我试图学习CDS视图,并创建带有参数的CDS视图,并使用日期函数'DATS_ADD_DAYS'确定到期日期。

在下面的语句中遇到语法错误"列的到期日期未知"

DATS_DAYS_BETWEEN(到期日期,$ parameters.p_date)为天。

 @ VDM.viewType:#BASIC
 @ AbapCatalog.sqlViewName:'YFIINVDUEDATE'
 @ AbapCatalog.compiler.compareFilter:是
 @ AbapCatalog.preserveKey:是
 @ AccessControl.authorizationCheck:#检查
 @ EndUserText.label:" CDS视图以计算付款到期日"
 定义视图Y018_Invoice_duedate
     参数p_date:bldat,
                     P_bukrs:bukrs,
                     p_gjahr:gjahr
 从bkpf_bsik中选择为_bsik
    内部连接lfa1作为_lfa1
       在_lfa1.lifnr = _bsik.lifnr
    {
     _bsik.bukrs,
     _bsik.lifnr,
     _lfa1.name1,
     _bsik.gjahr,
     _bsik.belnr,
     _bsik.budat,
     _bsik.bldat,
     _bsik.cpudt,
     _bsik.waers,
     _bsik.xblnr,
     _bsik.blart,
     _bsik.monat,
     _bsik.zterm作为pay_term,
     zbd2t <> 0时的情况
     然后DATS_ADD_DAYS(zfbdt,cast(cast(cast(cast(_bsik.zbd2t as abap.char(5))as abap.numc(5))as abap.int4),'INITIAL')
     else DATS_ADD_DAYS(zfbdt,cast(cast(cast(cast(_bsik.zbd1t as abap.char(5))as abap.numc(5))as abap.int4),'INITIAL')
     以截止日期结束,
     DATS_DAYS_BETWEEN(due_date,$ parameters.p_date)为天
 },其中_bsik.bldat <= $ parameters.p_date和
         _bsik.bukrs = $ parameters.P_bukrs和
         _bsik.gjahr = $ parameters.p_gjahr 

感谢您对解决问题的帮助。

此致

穆罕默德M

付费偷看设置
发送
2条回答
SAP小菜
1楼 · 2020-09-08 09:10.采纳回答

您无法访问投影中的计算列(到期日期),例如

您必须复制整个CASE表达式,并将其用于Due_date计算,作为DATS_DAY_BETWEEN函数的参数(... DATS_DAYS_BETWEEN(zbd2t <> 0的情况 然后... end)...)。
另一种方法是引入另一个提供due_date信息的视图层。 其他视图可以用作您的视图的源。

微wx笑
2楼-- · 2020-09-08 09:16

您好 Florian Pfeffer

根据您的建议,我复制了整个CASE表达式,并能够创建另一个计算列。

 zbd2t <> 0时的情况
   然后DATS_DAYS_BETWEEN(DATS_ADD_DAYS(zfbdt,cast(cast(cast(cast(_bsik.zbd2t as abap.char(5))as abap.numc(5))as abap.int4),'INITIAL'),$ parameters.p_date)//计算到期日
   else DATS_DAYS_BETWEEN(DATS_ADD_DAYS(zfbdt,cast(cast(cast(cast(_bsik.zbd1t as abap.char(5))as abap.numc(5))as abap.int4),'INITIAL'),$ parameters.p_date)//计算到期日
   以Due_days结尾

致谢

穆罕默德M

一周热门 更多>