HANA客户账龄报告

2020-09-27 19:54发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 由于要添加150天和18...

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

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


嗨,

由于要添加150天和180天的列,因此我试图在HANA中重新创建"客户老化报告",但是在日期计算方面遇到了困难。

请参见下面的代码:


 选择OCRD。" CardCode" AS"客户代码",OCRD。" CardName" AS"客户名称",SUM(
     案件
         当" SYSCred" <> 0时" SYSCred" * -1
         ELSE" SYSDeb"
     END)AS"余额到期",IFNULL(SUM(
     案件
         当DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))<0 THEN
         案件
             当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1
             ELSE JDT1。" BalDueDeb"
         结束
     END),0.00)AS" Future Remit",IFNULL(SUM(
     案件
         当(DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))> = 0并且
          DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))<30)然后
         案件
             当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1
             ELSE JDT1。" BalDueDeb"
         结束
     END),0.00)AS" 0-30天",IFNULL(SUM(
     案件
         当(DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))> = 30并且
          DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))<60)然后
         案件
             当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1
             ELSE JDT1。" BalDueDeb"
         结束
     END),0.00)AS" 31至60天",IFNULL(SUM(
     案件
         当(DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))> = 60并且
          DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))<90)然后
         案件
             当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1
             ELSE JDT1。" BalDueDeb"
         结束
     END),0.00)AS" 61至90天",IFNULL(SUM(
     案件
         当(DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))> = 90并且
          DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))<120)然后
         案件
             当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1
             ELSE JDT1。" BalDueDeb"
         结束
     END),0.00)AS" 91至120天",IFNULL(SUM(
     案件
         当DAYS_BETWEEN(JDT1。" DueDate",(从DUMMY中选择NOW()" NOW"))> = 120 THEN
         案件
             当" BalDueCred" <> 0时" BalDueCred" * -1
             其他" BalDueDeb"
         结束
     END),0.00)AS" 120+天"
 从JDT1,
     OCRD
 在JDT1。" ShortName" = OCRD。" CardCode"和OCRD。" CardType" ='c'
 OCRD的GROUP。" CardCode",OCRD。" CardName" HAVING SUM(
 案件
     当" SYSCred" <> 0时" SYSCred" * -1
     ELSE" SYSDeb"
 END)> 0 OR SUM(
 案件
     当" SYSCred" <> 0时" SYSCred" * -1
     ELSE" SYSDeb"
 结束)<0
 OCRD的订单。" CardCode";
 
4条回答
jovirus
2020-09-27 20:16

Lars,

谢谢您使用CURRENT_DATE()选项的建议。

我遇到的困难是使用ADD_DAYS函数时。 我不小心从最初发布的代码中忽略了这一点。

我得到的错误是"("第7行第44列附近的语法不正确。

请参见下面的修改后的代码:

选择OCRD。" CardCode" AS"客户代码",OCRD。" CardName" AS"客户名称",SUM(
     案件
         当" SYSCred" <> 0时" SYSCred" * -1
         ELSE" SYSDeb"
     END)AS"余额到期",IFNULL(SUM(
     案件
         当DAYS_BETWEEN(JDT1。" DueDate",ADD_DAYS('1900-01-01 00:00:00.000',CURRENT_DATE()))<0 THEN
         案件
             当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1
             ELSE JDT1。" BalDueDeb"
         结束
     END),0.00)AS" Future Remit",IFNULL(SUM(
     案件
         时间(DAYS_BETWEEN(JDT1。" DueDate",ADD_DAYS('1900-01-01 00:00:00.000',CURRENT_DATE()))> = 0并且
          DAYS_BETWEEN(JDT1。" DueDate",ADD_DAYS('1900-01-01 00:00:00.000',CURRENT_DATE()))<30)然后
         案件
             当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1
             ELSE JDT1。" BalDueDeb"
         结束
     END),0.00)AS" 0-30天",IFNULL(SUM(
     案件
         时间(DAYS_BETWEEN(JDT1。" DueDate",ADD_DAYS('1900-01-01 00:00:00.000',CURRENT_DATE()))> = 30 AND
          DAYS_BETWEEN(JDT1。" DueDate",ADD_DAYS('1900-01-01 00:00:00.000',CURRENT_DATE()))<60)然后
         案件
             当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1
             ELSE JDT1。" BalDueDeb"
         结束
     END),0.00)AS" 31至60天",IFNULL(SUM(
     案件
         何时(DAYS_BETWEEN(JDT1。" DueDate",ADD_DAYS('1900-01-01 00:00:00.000',CURRENT_DATE()))> = 60 AND
          DAYS_BETWEEN(JDT1。" DueDate",ADD_DAYS('1900-01-01 00:00:00.000',CURRENT_DATE()))<90)然后
         案件
             当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1
             ELSE JDT1。" BalDueDeb"
         结束
     END),0.00)AS" 61至90天",IFNULL(SUM(
     案件
         当(DAYS_BETWEEN(JDT1。" DueDate",ADD_DAYS('1900-01-01 00:00:00.000',CURRENT_DATE()))> = 90 AND
          DAYS_BETWEEN(JDT1。" DueDate",ADD_DAYS('1900-01-01 00:00:00.000',CURRENT_DATE()))<120)然后
         案件
             当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1
             ELSE JDT1。" BalDueDeb"
         结束
     END),0.00)AS" 91至120天",IFNULL(SUM(
     案件
         当DAYS_BETWEEN(JDT1。" DueDate",ADD_DAYS('1900-01-01 00:00:00.000',CURRENT_DATE()))> = 120 THEN
         案件
             当" BalDueCred" <> 0时" BalDueCred" * -1
             其他" BalDueDeb"
         结束
     END),0.00)AS" 120+天"
 从JDT1,
     OCRD
 在JDT1。" ShortName" = OCRD。" CardCode"和OCRD。" CardType" ='c'
 OCRD的GROUP。" CardCode",OCRD。" CardName" HAVING SUM(
 案件
     当" SYSCred" <> 0时" SYSCred" * -1
     ELSE" SYSDeb"
 END)> 0 OR SUM(
 案件
     当" SYSCred" <> 0时" SYSCred" * -1
     ELSE" SYSDeb"
 结束)<0


 

一周热门 更多>