如何计算仅在打印时存在的字段?

2020-09-10 16:56发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我有可以存在于三种可能的销售组中...

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

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


我有可以存在于三种可能的销售组中的客户,即使他们可以被分组为多个销售组。 哪种类型的销售组具有棘手的逻辑。 共有三个销售组:A,B,C。只要客户属于A个销售组中的一个,他们就被视为A;如果客户不在A销售组中,则他们可以同时属于B组 B和C,但只有C才可以在C中考虑。

所以,如果我有几个客户

Joe
销售组101(A)销售组102(A)销售组506(C)

乔被认为是A

Tom销售组307(B)销售组101(A)

汤姆被认为是A

Rick
销售组333(B)销售组506(C)

里克被认为是B

Mary
销售组506(C)

玛丽被认为是C

如何运行一个公式,计算出它们属于哪个组,然后使用"运行总计"字段创建交叉表或自己的表? (我还要提到,给销售组一个层次结构,但是就本报告而言,即使层次结构中的A低于B或C,A仍然被视为A)

其他需要注意的事情:

-只有一个C型销售组,每个客户只能分配一次

-只有4个A型销售组

-有多个4类销售组,但没有客户会被分配到2个或3个以上的B类销售组。

我根据客户分组,然后在组页脚中汇总了以下公式(为每个客户重置)。 我的逻辑是,由于C只能使用一次就将得到0,因为B组将只得到2或3倍,它将得到1,并且A组将得到10。因此0将产生C, 1和9将产生B,而10及以上的任何值将产生A。

详细信息

 如果{cust_billing.sales_group}在[" 101"," 102"," 103"," 104"]中,则为10
 否则,如果{cust_billing.sales_group} =" 506",则为0
 否则1
  

在页脚中

 如果{#RTotal0} = 0,则为" C"
 否则,如果{#RTotal0}> 0并且{#RTotal0} <10,则为" B"
 否则,如果{#RTotal0}> 9,则为" A"
  

我无法将第二个字段拉到交叉表中,也无法使用另一个正在运行的总计字段对其进行计数。 根据我的收集,该字段是在打印时创建的,因此无法计算。

1条回答
野沐沐
2020-09-10 17:02

您好,库尔特

哇,这是条件列表。 首先,您是正确的,因为在处理报表时会计算该公式,所以不能在交叉表中使用运行总计。

由于计算的复杂性和最终结果是交叉表,您可以创建视图或存储过程来执行此处提到的所有业务逻辑并仅返回结果,所以Crystal只需 交叉表?

这种更好的做法的一个原因是,Crystal擅长于计算,但是它受到限制,并且可能会消耗更多的资源。 该数据库旨在比Crystal更有效地处理数字。 在数据库中进行分组和运行总计也是如此,只需让Crystal进行交叉表即可。

希望有帮助,

Brian

一周热门 更多>