*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 のようになります。プロパティが指定されていない場合、ID プロパティが使用されます。たとえば、*WHEN ACCOUNT equals to *WHEN ACCOUNT.ID となります。
{ValidCondition} は基準を満たす 1 つまたは複数の値です。これらの値を二重引用符で囲み、文字列として扱うことができます。値が数値を表す場合は、引用符を省略します。以下に例を示します。
*IS "AVG","END"
*IS 10,20,30
*IS 句では、演算子が指定されていない場合は、等号がある (*IS = "AVG", "END") と想定されます。
{value} は、変数ではなくリテラルのみである必要があります。そのため、以下のようなコードは使用できません。
*IS dimension.property
不等号演算子 (<>) の 2 つの記号の間にはスペースを入れないでください。演算子と値との間には、1 つ以上のスペースを挿入することができます。
不等号 (<>) を使用する場合、渡すことができる値は 1 つのみです。そのため、構文 *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 の故意または重大な過失によって生じた場合は除くものとします。