*WHEN / *ENDWHEN
WHEN / ENDWHEN 结构与 SELECTCASE / ENDSELECT 结构的作用相同,都使用 *REC( ) 语句生成新记录。
语法如下:
*WHEN {criteria}
*IS [=]{value1}[,{value2},…] | <>{value}
*REC(FACTOR={Real number}|EXPRESSION={Expression}[,{dim1}={member},{dim2}=…])
[ *REC(FACTOR={Real number}|EXPRESSION={Expression}[,{dim1}={member},{dim2}=…])]
[*ELSE]
*ENDWHEN
其中
{criteria} 是要测试的内容。通常是维当前成员的属性。其语法是 DimensionName.Property | DimensionName,比如 *WHEN ACCOUNT.RATETYPE。如果未指定“属性”,那么假设为标识属性。例如,*WHEN ACCOUNT equals to *WHEN ACCOUNT.ID。
{ValidCondition} 是符合此条件的一个或多个值。您可以将其用双引号引起来,把其看作字符串。如果它们代表数字值,则省略引号。例如:
*IS "AVG","END"
*IS 10,20,30
如果未指定运算符,那么 *IS 语句假设存在等号 (*IS = "AVG", "END")。
{value} 必须只为字母,不是变量。因此,不支持下列示例:
*IS dimension.property
不等号运算符 (<>) 的两个字符之间应该没有空格。您可以在运算符和值之间插入一个或多个空格。
如果使用不等号 (<>),那么只可以传递一个值。因此,语法“*IS <> 2,3,4”无效。
当前不支持像 AND、OR 和 NOT 的其他相关运算符。
WHEN / ENDWHEN 的嵌套
在 WHEN / ENDWHEN 结构中可以按任意顺序嵌套所需数量的级别,如下列示例所示:
*WHEN xxx
*IS "A"
*REC(…)
*REC(…)
*IS "B"
*REC(…)
*WHEN yyy
*IS "C","D","E"
*REC(…)
*ELSE
*REC(…)
*ENDWHEN
*ENDWHEN
“本文档中包括的任何软件编码和/或代码行/字符串(“代码”)仅为示例,不可用于生产系统环境中。”“代码仅为更好、更直观地解释特定编码的语法和语法规则。”SAP 不担保本文中代码的正确性和完整性,且 SAP 不对因使用代码而造成的错误或损害负责,除非这些损害是由 SAP 故意或因其重大疏忽所造成。