从IBP提取数据| 如果输入参数为空或为NULL,则选择ALL

2020-08-19 13:40发布

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

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


大家好,

我正在从CPI-DS任务的IBP计算方案中提取数据。 如您所知,在从IBP提取数据时,我们需要小心,因为错误的选择查询会影响性能。 想象一下,我想使用" CUSTOMERID"上的where条件查询表。 该客户ID将通过全局变量$ CUSTOMERID作为CPI-DS任务的输入。 如果业务用户提供客户ID作为输入,则此方法很好。 将where条件下推到IBP,但是如果业务用户未对此参数输入,则无论customerid为null还是customerid不为null,cpi-ds仍应从IBP提取所有数据。 如何在CPI-DS中实现这一目标?

当然,当$ customerid为空时,我可以初始化标志$ inputgiven = 0,并使用以下where条件。

(0 = $ inputgiven或ibp.customerid = $ customerid)

但是这种情况不会将 ibp.customerid = $ customerid 下推到IBP,这会影响性能,因为IBP必须先查询所有数据并将其发送到CPI-DS,然后再发送到CPI-DS 应该在数据集上应用where过滤器。

创建多个数据流不是一个选择,因为我可能有很多其他情况,而且我无法为这些过滤器的每个组合都创建数据流。 它只是不可操纵的。

有什么想法吗?

关于,
砂纸

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

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


大家好,

我正在从CPI-DS任务的IBP计算方案中提取数据。 如您所知,在从IBP提取数据时,我们需要小心,因为错误的选择查询会影响性能。 想象一下,我想使用" CUSTOMERID"上的where条件查询表。 该客户ID将通过全局变量$ CUSTOMERID作为CPI-DS任务的输入。 如果业务用户提供客户ID作为输入,则此方法很好。 将where条件下推到IBP,但是如果业务用户未对此参数输入,则无论customerid为null还是customerid不为null,cpi-ds仍应从IBP提取所有数据。 如何在CPI-DS中实现这一目标?

当然,当$ customerid为空时,我可以初始化标志$ inputgiven = 0,并使用以下where条件。

(0 = $ inputgiven或ibp.customerid = $ customerid)

但是这种情况不会将 ibp.customerid = $ customerid 下推到IBP,这会影响性能,因为IBP必须先查询所有数据并将其发送到CPI-DS,然后再发送到CPI-DS 应该在数据集上应用where过滤器。

创建多个数据流不是一个选择,因为我可能有很多其他情况,而且我无法为这些过滤器的每个组合都创建数据流。 它只是不可操纵的。

有什么想法吗?

关于,
砂纸

付费偷看设置
发送
9条回答
派大星 ヾ
1楼-- · 2020-08-19 14:09

嗨,莱因哈德,

如果客户ID在源系统中始终包含一个值,即IBP,则确实可以使用。 想象一下,该属性在源系统中包含NULL,那么我仍然应该能够提取数据。 但是,如果IBP.CustomerID为NULL,则此过滤器将计算为false。

派大星 ヾ
2楼-- · 2020-08-19 14:26

那将如何解决我的问题? 如果输入参数为空,我想从IBP中选择所有内容

Haoba3210
3楼-- · 2020-08-19 14:08

嗨杰夫,

cpi-ds不允许仅变量作为过滤器的一部分。 这是语法错误。 我尝试了您的建议,但在第一个查询转换中出现以下错误
ERROR复制表具有无效的过滤器表达式:无法确定参数数据类型。

但是我也执行了任务,实际上我也收到了以下错误:

第<202>行的语法错误::在附近找到期望<+,||,除,=,> =,>,IN,IS,< =,LIKE,<,MOD,*,<>,十进制,字符434>。



一周热门 更多>