如何将可选的多值参数从主报表传递到子报表的命令提示符

2020-09-12 18:42发布

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

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


我在Main报告中有一个可选的Single-value参数,该参数作为公式传递给子报表。

主报告公式:-

stringVar SingleVale:=如果(HasValue({?MyParam}))则{?MyParam} ELSE" N/A"


我的子报表具有与以上公式链接的命令提示符

子报表逗号-where子句:-

WHERE('N/A'=('{?MyParam}')OR Field =('{?MyParam}'))


当参数为"可选"和"单值"时,上面的方法非常有效,但是当参数为"可选"和"多值"时,我不知道如何修改

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

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


我在Main报告中有一个可选的Single-value参数,该参数作为公式传递给子报表。

主报告公式:-

stringVar SingleVale:=如果(HasValue({?MyParam}))则{?MyParam} ELSE" N/A"


我的子报表具有与以上公式链接的命令提示符

子报表逗号-where子句:-

WHERE('N/A'=('{?MyParam}')OR Field =('{?MyParam}'))


当参数为"可选"和"单值"时,上面的方法非常有效,但是当参数为"可选"和"多值"时,我不知道如何修改

付费偷看设置
发送
5条回答
四川大学会员
1楼-- · 2020-09-12 19:17

多值参数作为数组处理。 但是,IIRC无法将数组作为子报表链接传递。 不过,您可以执行以下操作:

加入({?MyParam},',')

请注意,我在这里没有使用变量-您不需要一个 ,其他参数也不需要。 您可以将公式写为:

如果(HasValue({?MyParam}))然后{?MyParam} ELSE" N/A"

Join命令将连接值 在数组中使用逗号定界符分隔成字符串。 如果您需要在子报表的命令中使用此命令,我可以尝试执行以下操作:

"('" + Join({?MyParam},"','")+"') "

这将格式化连接的参数值,在它们之间使用','以及末尾的('和'),以便您可以在查询中使用IN子句,如下所示:

{。MultiParam}

中的Table.Value请注意,即使这是一个字符串,我也没有在参数周围加上引号-这是因为它已经被正确格式化以用于IN。

-Dell

lukcy2020
2楼-- · 2020-09-12 19:14

您必须在主报表中将参数转换为字符串,并在子报表的链接中使用公式。 只是将参数传递到子报表并在那里进行转换将无法正常工作。

-Dell

能不能别闹
3楼-- · 2020-09-12 19:19

感谢戴尔的帮助。

我听了你的指示。 我在{?MultiParam}中修改了命令Table.Value,并且在子报表中将链接的参数值设为('Value1',Value2')。 但是子报表没有过滤数据。 当我不传递任何值时,子报表返回数据,但如果传递值,则不返回任何值。

在哪里(" N/A" = {?MultiParam}或Table.FieldName IN {?MultiParam})

主报告-可选的MultiValue参数->通过公式链接到Subreport -Command MultiValue参数

如果((HasValue({?MultiParam})),则"(''+ Join({?MultiParam},"','")+"')"其他" N/A";

95年老男孩
4楼-- · 2020-09-12 19:15

这是我的公式,如果(HasValue({?MultiParam}))然后"(''+ Join({?MultiParam},"','")+"')"其他" N/A";

暮风yp
5楼-- · 2020-09-12 19:15

我的数据库是Oracle 12c和ODBC连接

一周热门 更多>