不允许超过32天的数据

2020-08-19 05:49发布

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

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


需要一些具有晶体报告的帮助。

我的目标是仅在输入的日期范围大于32时不显示数据。如果除了我正在执行的操作之外,还有其他方法,请指导我。

我可以在其中一份报告中选择使用公式,但同一公式在另一份报告中无效。

新报告中的所有字段也都可用,但是给我一个错误"该公式无法使用,因为必须稍后对其进行评估"。

任何人都可以帮忙。

公式是

  {@日期差异} <= 32并且
  当前日期-{@开始日期} <= 60并且
  {Command.DATE_TRANSACTION} = {?Date}
  

更多详细信息:

  @date是我的参数。
 @开始日期是公式最小值(@dtransate)
 @结束日期是公式的最大值(@transdate)
 @date的区别是公式DateDiff(" d",{@开始日期},{@结束日期})+ 1  

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

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


需要一些具有晶体报告的帮助。

我的目标是仅在输入的日期范围大于32时不显示数据。如果除了我正在执行的操作之外,还有其他方法,请指导我。

我可以在其中一份报告中选择使用公式,但同一公式在另一份报告中无效。

新报告中的所有字段也都可用,但是给我一个错误"该公式无法使用,因为必须稍后对其进行评估"。

任何人都可以帮忙。

公式是

  {@日期差异} <= 32并且
  当前日期-{@开始日期} <= 60并且
  {Command.DATE_TRANSACTION} = {?Date}
  

更多详细信息:

  @date是我的参数。
 @开始日期是公式最小值(@dtransate)
 @结束日期是公式的最大值(@transdate)
 @date的区别是公式DateDiff(" d",{@开始日期},{@结束日期})+ 1  
付费偷看设置
发送
13条回答
空代码
1楼 · 2020-08-19 05:58.采纳回答

如上所述,您不应将Select Expert与命令配合使用。 您也不能在命令中使用日期范围参数-而是需要具有多带带的开始日期和结束日期参数。

对于Oracle,您应在Where子句中添加类似的内容,以防止 如果日期范围大于32天,则从拉取数据报告:

其中Trunc({?StartDate}))-Trunc({?EndDate})<= 32
   和Sysdate-{?StartDate} <= 60
   和MYTABLE.DATE_TRANSACTION> = Trunc({?StartDate})
   和MYTABLE.DATE_TRANSACTION <= Trunc({?EndDate})

您没有提供有关" @transdate"是什么的任何信息,但是我假设它是DATE_TRANSACTION字段中的值。 如果不是这种情况,请让我知道它的公式,然后我将对其进行更新。

-Dell

My梦
2楼-- · 2020-08-19 06:07

尝试一下:

选择
   UL.UNIT_ID,
   案件
     当UL.ACTION_CODE = -1时'FROM ORDER'
     当UL.ACTION_CODE = 1时,即可"订购"
     否则为" 0"
   结束Order_Type,
   UL.ORDER_CODE,
   UL.ORDER_ITEM,
   UL1.ORDER_CODE ||'-'|| UL1.ORDER_ITEM UL1项目,
   UL.DATE_TRANSACTION,
   U.mass_estimated_net,
   U.mass_scaled网,
   U.mass_scaled_gross,
   U.ORDER_CODE CURRENT_ORDER,
   U.ORDER_ITEM CURRENT_ITEM,
   U.WAREHOUSE_CODE,
   U.WAREHOUSE_LOCATION
 从itiprd.UNITLOG UL
   内部连接itiprd.unit U
     在UL.unit_id = u.unit_id上
   内部连接itiprd.UNITLOG UL1
     在UL.DATE_TRANSACTION = UL1.DATE_TRANSACTION
       AND UL.UNIT_ID = UL1.UNIT_ID
       AND UL1.UNIT_TRANSACTION_TYPE ='TV'
       AND UL1.ACTION_CODE = 1
 UL.UNIT_TRANSACTION_TYPE ='TV'
   和UL.ACTION_CODE <> 1
   AND U.UNIT_STATUS ='WH'
   和Trunc({?StartDate})-Trunc({?EndDate})<= 32
   和Trunc(Sysdate)-Trunc({?StartDate})<= 60
   和UL.DATE_TRANSACTION> = {?StartDate}
   和UL.DATE_TRANSACTION <= {?EndDate} 

我对您的查询做了几件事:

-重新格式化以使其更具可读性。

-从Select中删除了子查询,而是使其成为联接。

-为case语句添加了别名,并串联了来自UL1的数据。

- 假定ACTION_CODE字段是数字,并删除了单引号。 如果字段类型是varchar或char,则需要放回它们。

-因为不需要它们,所以删除了Case语句周围的括号。

-调整了调用

我可能要验证查询的一件事是在数据库工具(例如Toad或PL/SQL Developer)中对其进行处理,以验证查询。 让您更清晰地了解任何错误所在。 为此,您可以将{?Parameter}语法更改为@Parameter。 然后,当您将其粘贴到Crystal的"命令编辑器"中时,必须将其更改回去。 另外,请确保不要在主报表的"字段浏览器"中的"命令编辑器"中创建参数!

此外,请注意,我是这里的志愿者-我不是SAP员工,我 我在美国,通常我不在周末工作(除非我正在为客户安装...)。 因此,如果我没有立即回应,请耐心等待。

悠然的二货
3楼-- · 2020-08-19 05:57

下面是我的整个查询。 我是DB&Crystal的新手。 可能我正在犯一些错误,您可以指导我如何解决。

SELECT ul.UNIT_ID,

(UL.ACTION_CODE ='-1'时的情况

当UL.ACTION_CODE ='1'然后'TO ORDER'否则'0'结束时'FROM ORDER',ul.ORDER_CODE,ul.ORDER_ITEM,

(从itiprd.UNITLOG UL1中选择CONCAT(concat(concat(UL1.ORDER_CODE,'-'),UL1.ORDER_ITEM))

UL1.UNIT_TRANSACTION_TYPE ='TV'

AND UL1.ACTION_CODE ='1'

AND UL.DATE_TRANSACTION = UL1.DATE_TRANSACTION

AND UL.UNIT_ID = UL1.UNIT_ID)"要订购",

ul.DATE_TRANSACTION,u.mass_estimated_net,u.mass_scaled" Net",u.mass_scaled_gross,U.ORDER_CODE" CURRENT ORDER",U.ORDER_ITEM" CURRENT ITEM",U.WAREHOUSE_CODE,U.WAREHOUSE_LOCATION

来自itiprd.UNITLOG UL

在ul.unit_id = u.unit_id上内部加入itiprd.unit u

ul.UNIT_TRANSACTION_TYPE ='TV'和ul.action_code <>'1'AND U.UNIT_STATUS ='WH'

和Trunc({?StartDate})-Trunc({?EndDate})<= 32

和Sysdate-{?StartDate} <= 60

和ul.DATE_TRANSACTION> = Trunc({?StartDate})

和ul.DATE_TRANSACTION <= Trunc({?EndDate})

Climb_Ma
4楼-- · 2020-08-19 06:14

PL/SQL Developer具有一个特殊的"运行查询"选项,该选项使您可以输入像这样的参数值。 自从我使用它已经有一段时间了,所以我不记得如何使用它。

-Dell

compass1988
5楼-- · 2020-08-19 06:01

尝试删除单引号 参数名称:

 to_date({?EndDate},'dd/mm/yyyy hh24:mi:ss')

-阿比拉什

打一壶酱油
6楼-- · 2020-08-19 05:57

您应该将所有@都更改为&,以使其正常工作。

-Dell

打个大熊猫
7楼-- · 2020-08-19 06:01

1。 不要在命令中使用Select Expert! 参见 https://blogs.sap.com/ 2015/04/01/best-practices-when-using-commands-with-crystal-reports/了解有关原因的信息。

2。 在命令中实现此功能时,必须将其转换为查询的正确数据库语法,并将其放在where子句中。

您要连接到哪种数据库? 我也许可以为您提供有关如何编写命令查询部分的建议。

-Dell

一周热门 更多>