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条回答
CJones
2020-09-27 20:06

嗨,拉尔斯,

您提供给我的逻辑是正确的,并且比我刚开始使用时更容易,但是在进行更改之后,查询将无错误运行,但不返回任何行。

基本上,我正在尝试重新创建"客户应收帐款"账龄查询,这样我可以包括150天和180天以上。 我正在尝试通过转换可在SQL中使用的查询来实现这一目标,但对于HANA界面和HANA语言中涉及的日期函数,我仍然是陌生的。

谢谢您到目前为止为我提供的所有帮助。

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

选择OCRD。" CardCode" AS"客户代码",OCRD。" CardName" AS"客户名称",SUM(
     案件
         当" SYSCred" <> 0时" SYSCred" * -1
         ELSE" SYSDeb"
     END)AS"余额到期",IFNULL(SUM(
 案件
         当DAYS_BETWEEN(JDT1。" DueDate",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",CURRENT_DATE)> = 0并且
          DAYS_BETWEEN(JDT1。" DueDate",CURRENT_DATE)<30)然后
         案件
             当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1
             ELSE JDT1。" BalDueDeb"
         结束
     END),0.00)AS" 0-30天",IFNULL(SUM(
     案件
         当(DAYS_BETWEEN(JDT1。" DueDate",CURRENT_DATE)> = 30并且
          DAYS_BETWEEN(JDT1。" DueDate",CURRENT_DATE)<60)然后
         案件
             当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1
             ELSE JDT1。" BalDueDeb"
         结束
     END),0.00)AS" 31至60天",IFNULL(SUM(
     案件
         当(DAYS_BETWEEN(JDT1。" DueDate",CURRENT_DATE)> = 60并且
          DAYS_BETWEEN(JDT1。" DueDate",CURRENT_DATE)<90)然后
         案件
             当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1
             ELSE JDT1。" BalDueDeb"
         结束
     END),0.00)AS" 61至90天",IFNULL(SUM(
     案件
         当(DAYS_BETWEEN(JDT1。" DueDate",CURRENT_DATE)> = 90并且
          DAYS_BETWEEN(JDT1。" DueDate",CURRENT_DATE)<120)然后
         案件
             当JDT1。" BalDueCred" <> 0则JDT1。" BalDueCred" * -1
             ELSE JDT1。" BalDueDeb"
         结束
     END),0.00)AS" 91至120天",IFNULL(SUM(
     案件
         当DAYS_BETWEEN(JDT1。" DueDate",CURRENT_DATE)> = 120则
         案件
             当" 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
 

亲切的问候,

Vinolan Pillay

一周热门 更多>