声明共享变量时使用" IF THEN"

2020-08-31 22:51发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我有一个报告,我试图从Acces...

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

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


我有一个报告,我试图从Access转到Crystal(应老板的要求)。 我们有35个产品价格类别。 我需要声明任何给定报告中使用的平均价格。 任何或所有类别都可以具有信息,具体取决于在指定时间段内出售的产品。

然后,当我运行主报表时,任何没有存储价格的产品都将使用平均价格。

我在主报告上方的子报告中有一个计算,应该生成该平均值。 但这并没有提供声明中的任何数据。 然后更改了语法,现在出现一个错误,提示"其余文本(第一个声明之后的所有内容)似乎都不是公式的一部分。"

这是等式的结构:

如果不是(IsNull({'ALL_ITEMS _'_ 1.PREVIOUS PRICE}))]

然后

{'ALL_ITEMS _'_ 1。原价}

其他

WhilePrintingRecords;
Shared Currencyvar ABRS;
Shared Currencyvar ASST;
共享Currencyvar AUTO; [此后还有更多,但是有点多余]

如果{tbProductClass.Description} =" Abrasives"
然后ABRS:= AVERAGE({'ALL_ITEMS _'_ 1.PREVIOUS PRICE},{tbProductClass.Description});
ABRS; <-----这是编译器看到方程式最后一部分的地方

否则,如果{tbProductClass.Description} =" Assortment"
然后ASST:= AVERAGE({'ALL_ITEMS _'_ 1.PREVIOUS PRICE},{tbProductClass.Description});
ASST;

否则,如果{tbProductClass.Description} =" Automotive"
然后使用AUTO:= AVERAGE({'ALL_ITEMS _'_ 1.PREVIOUS PRICE},{tbProductClass.Description});
AUTO;

[同样,这些还有更多,但有冗余]

据我所知,语法在结构上没有错-这似乎是一个逻辑问题。

如果可以解决此问题(请...),请告诉我。 如果没有,还有另一种方法可以完成我想做的事情吗?

1条回答
Bunny_CDM
2020-08-31 22:58 .采纳回答

尝试将公式更改为如下形式:

 WhilePrintingRecords;
 如果不是(IsNull({'ALL_ITEMS _'_ 1.PREVIOUS PRICE}))]然后
   {'ALL_ITEMS _'_ 1.PREVIOUS PRICE}
 其他(
   共享Currencyvar ABRS;
   共享Currencyvar ASST;
   共享Currencyvar AUTO;  [此后还有更多,但有点多余]
   如果{tbProductClass.Description} =" Abrasives"然后(
     ABRS:= AVERAGE({'ALL_ITEMS _'_ 1.PREVIOUS PRICE},{tbProductClass.Description});
     ABRS;
   )
   否则,如果{tbProductClass.Description} =" Assortment",则(
     ASST:= AVERAGE({'ALL_ITEMS _'_ 1.PREVIOUS PRICE},{tbProductClass.Description});
     ASST;
   )
   否则,如果{tbProductClass.Description} =" Automotive",则(
     AUTO:= AVERAGE({'ALL_ITEMS _'_ 1.PREVIOUS PRICE},{tbProductClass.Description});
     汽车;
   )
 )

如果在Else中或在Then与Else之间有多行,则需要使用括号将这些行组合在一起。

您可能还需要删除半行 -冒号,但我会先对它们进行尝试。

-Dell

一周热门 更多>