*WHEN/*ENDWHEN

Une structure WHEN/ENDWHEN fonctionne de manière identique à la structure SELECTCASE/ENDSELECT avec des instructions *REC( ) qui génèrent de nouveaux enregistrements.

La syntaxe est la suivante :

*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} est ce qu’il faut tester. Il s’agit généralement de la propriété du membre actuel d’une dimension. La syntaxe est DimensionName.Property | DimensionName, comme *WHEN ACCOUNT.RATETYPE. Si la propriété n'est pas indiquée, la propriété de l'ID est supposée. Par exemple, *WHEN ACCOUNT equals to *WHEN ACCOUNT.ID.

{ValidCondition} est une valeur, ou plus, correspondant aux critères. Vous pouvez les mettre entre des guillemets doubles pour les traiter en tant que chaînes. Ignorez les guillemets s'ils représentent des valeurs numériques. Par exemple :

*IS "AVG","END"

*IS 10,20,30

Si aucun opérateur n'est spécifié, la clause *IS suppose la présence d'un signe égal (*IS = "AVG", "END").

Les valeurs {value} doivent être des littéraux uniquement et non des variables. Le système ne supporte donc pas le modèle suivant :

*IS dimension.property

Remarque

Il ne doit pas y avoir d'espace entre les deux caractères de l'opérateur du signe inégal (<>). Vous pouvez insérer un espace, ou plus, entre les opérateurs et la valeur.

Si un signe inégal (<>) est utilisé, vous pouvez transférer une seule valeur. La syntaxe *IS <> 2,3,4 n'est donc pas valide.

Actuellement, le système ne supporte pas les autres opérateurs relationnels, tels que AND, OR et NOT.

Imbrication de *WHEN/*ENDWHEN

Les structures WHEN/ENDWHEN peuvent être imbriquées dans autant de niveaux que nécessaire et dans toutes les séquences, comme le montre le modèle suivant :

*WHEN xxx

*IS "A"

*REC(…)

*REC(…)

*IS "B"

*REC(…)

*WHEN yyy

*IS "C","D","E"

*REC(…)

*ELSE

*REC(…)

*ENDWHEN

*ENDWHEN

Tous les codes logiciels et/ou lignes/chaînes de code ("Code") inclus dans cette documentation sont fournis à titre d'exemples et ne sont en aucun cas destinés à un usage dans un environnement système productif.Le Code a pour but de mieux expliquer et d'offrir un exemple visuel des règles de syntaxe et de rédaction de certains codes.SAP ne garantit pas l'exactitude et l'exhaustivité du Code ci-après et SAP ne pourra pas être tenu responsable des erreurs ou dommages causés par l'utilisation dudit Code, sauf si de tels dommages ont été causés volontairement par SAP ou par négligence grave de SAP.