CR:如何将多项选择参数字段作为单个参数传递?

2020-08-22 00:55发布

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

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


大家好,

我的参数字段有问题。 我创建了一个具有以下属性的参数字段:

-值列表:静态

-在面板上显示:只读

-可选提示:True

-允许自定义值:True

-允许多个值:True


我已经创建了多个值。 叫他们

A

B

C

现在我要做的是将列表中选择的每个值以及任何手动输入的值传递给"之后的新页面"定义中的If表达式

(如果HasValue({?MultipleChoice})然后({Parameter_Name} = {?MultipleChoice}))
 


从本质上讲,然后应将多个选择参数中的每个参数显示在新页面上。

但是,由于某些原因,这仅在我仅选择列表的第一个值时才起作用。 这里是" A"。 如果我选择" A",则每个" A"都会显示在新页面上。

但是,一旦我选择任何其他单个值,就什么也没有发生。 因此,仅选择" B"将不会导致在新页面上显示" B"。

那是问题编号1。

问题2是,一旦我选择了多个值,什么也不会发生。 看来,我需要以某种方式告诉CR对每个单个值执行此过程,而不要使用所有值的总和。

有人知道解决这两个问题的方法吗? 也许问题1甚至是问题2的基础。所以也许我们需要先修复第二个问题?

非常感谢大家!

亚历克斯

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

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


大家好,

我的参数字段有问题。 我创建了一个具有以下属性的参数字段:

-值列表:静态

-在面板上显示:只读

-可选提示:True

-允许自定义值:True

-允许多个值:True


我已经创建了多个值。 叫他们

A

B

C

现在我要做的是将列表中选择的每个值以及任何手动输入的值传递给"之后的新页面"定义中的If表达式

(如果HasValue({?MultipleChoice})然后({Parameter_Name} = {?MultipleChoice}))
 


从本质上讲,然后应将多个选择参数中的每个参数显示在新页面上。

但是,由于某些原因,这仅在我仅选择列表的第一个值时才起作用。 这里是" A"。 如果我选择" A",则每个" A"都会显示在新页面上。

但是,一旦我选择任何其他单个值,就什么也没有发生。 因此,仅选择" B"将不会导致在新页面上显示" B"。

那是问题编号1。

问题2是,一旦我选择了多个值,什么也不会发生。 看来,我需要以某种方式告诉CR对每个单个值执行此过程,而不要使用所有值的总和。

有人知道解决这两个问题的方法吗? 也许问题1甚至是问题2的基础。所以也许我们需要先修复第二个问题?

非常感谢大家!

亚历克斯

付费偷看设置
发送
8条回答
哎,真难
1楼-- · 2020-08-22 01:35

如果我正确理解了您的要求,则可以按{Parameter_Name}分组并打开" New Page After",以便该组在不使用" New Page After"中的公式的情况下获得所需的内容。

如果选择了多个参数,则该参数将返回参数值的数组。 因此,您将必须执行以下操作:

((({Parameter_Name} = {?MultipleChoice})或({{Parameter_Name} in {?MultipleChoice}中的)))

第一个 选项处理单值参数,第二个处理多值参数。

-Dell

歪着头看世界
2楼-- · 2020-08-22 01:38

此处的窍门是,参数值在 处理报告。 但是,您根据参数过滤的数据将更改。 因此,将参数链接的数据分组,以便当数据更改为参数的另一个值时,您将获得分页符。

例如,如果我有一个名为{?MyParam的参数 },我在其中选择了值" A"和" B",并且在Select Expert中具有以下内容:

((({MyTable.MyField} = {?MyParam})或({MyTable.MyField  {?MyField}中的}))

我将按{MyTable.MyField}分组。 然后,我将转到{MyTable.MyField}组页脚的Section Expert,并根据我上面给出的说明打开" After New Page"。 但是,我只是想起,如果报表页脚中没有任何内容,这可能会在报表末尾提供一个额外的空白页。 在这种情况下,您无需单击"此后的新建页"复选框,而是单击该复选框右侧的公式按钮,然后输入以下内容:

 not OnLastRecord 

这将防止末页空白。

-Dell

暮风yp
3楼-- · 2020-08-22 01:55

你好戴尔·斯汀内特·克里斯蒂

非常感谢您!

我正要尝试通过" For"循环读取所有参数值,然后分别传递它们。 我不知道"输入"选项。



您是什么意思

按{Parameter_Name}分组,然后为该组打开"新建页面之后" 

我该怎么做? 选择该参数后,我想开始一个新页面,然后在该参数后开始一个新页面。

因此,如果我选择参数B,则B本身将始终位于页面上。 是否可以在不使用"新页面之前"和"新页面之后"的公式的情况下?

clever101
4楼-- · 2020-08-22 01:50

是否存在同时需要两者的特定原因? 我认为在所有情况下都可以使用之前或之后的方法。

如果您决定使用之前的方法,则您的第一页可能只是一个标题,然后数据将出现在下一页。 在这种情况下,您需要使用新页面中的

而不是OnFirstRecord 

 PageNumber> 1 

来取消显示新页面 公式之前。

如果您决定在公式之后使用,则末尾可能会有空白页。 为防止出现这种情况,您需要在New Page After公式中拥有

而不是OnLastRecord 

如果绝对必须同时拥有两者, 如果您为某个部分打开了"新建页面之后",而为下一部分打开了"新建页面之前",则有可能在报表的中间某处有一个空白页面。

-Dell

何必丶何苦呢
5楼-- · 2020-08-22 01:36

你好戴尔·斯内内特·克里斯蒂


再次感谢您的答复。

这是一个非常好的主意。 我实现了它,而且看起来效果很好。 仍然需要在详细信息部分中定义一些其他参数,但这很好。



我想知道的是,是否有可能将"之后的新页面"和"之前的新页面"称为"每个参数"。
意思是,用户可以选择某种方式 对于每个参数,他选择此参数是只在该参数之前创建新页面还是仅在之后创建新页面。

我在想类似传递带有前缀的参数的事情。
如果" v_ " +参数然后NewPageBefore

如果" n_" +参数,则NewPageAfter

如果参数Then NewPageBefore和NewPageAfter

我尝试过

 If(HasValue({?ParameterPaging})AND({?ParameterPaging}中的" v_"或(Not({{ParameterPaging}中的" v_")AND Not({{ParameterPaging}中的" n_")))))
 然后

但这仅适用于纯参数。

因此,它适用于" A"而不适用于" v_A"。 可能仅仅是因为它忽略了''v_'in'部分。 我的语法一定是错误的,但我看不到。

亦是此间程序员
6楼-- · 2020-08-22 01:44

如果用户在节后选择新页面,您仍然会遇到报告中间空白页面的问题。

因此,如果我正确理解,您的参数将不会用于选择数据,它们将用于显示/分页报告的各个部分。 那是对的吗? 每个部分都有参数吗? 如果是这样,则可以为每个参数使用两个值来执行此操作:"在新页面上开始"和"与上一个页面继续"(这些描述将与代码所需的任何值相关联。)

这样,您将不需要A部分的参数,而其他所有部分的"之前的新页面"将寻找从参数中分配给"从新页面开始"的任何值。

-Dell

一周热门 更多>