
Une ramification conditionnelle est une structure de contrôle qui vous permet de rendre l'exécution du code dépendante des conditions logiques.
La ramification conditionnelle la plus courante est constituée d'une paire de mots-clés IF et ENDIF. Le bloc de code entre IF et ENDIF est exécuté uniquement si la condition après IF est remplie.
Vous pouvez ajouter d'autres blocs de code en étendant la structure IF … ENDIF avec jusqu'à un mot-clé ELSE et un nombre arbitraire de mots-clés ELSEIF. En ajoutant le mot-clé ELSE, vous vous assurez que toujours exactement un des blocs de code est exécuté. Si ELSE est manquant, il peut arriver qu'aucun des blocs de code ne soit exécuté.
Le bloc de code à exécuter est déterminé comme suit :
- Tout d'abord, la condition IF est évaluée. S'il est rempli, le bloc de code associé est exécuté et le programme continue après ENDIF.
- La condition après la première instruction ELSEIF est analysée uniquement si la condition IF n'est pas remplie. S'il est rempli, le bloc de code associé est exécuté et le programme continue après ENDIF.
- Cette opération est effectuée consécutivement pour toutes les conditions ELSEIF. Si aucune des conditions n'est remplie et que la structure contient ELSE, le bloc de code après ELSE est exécuté. Sinon, aucun des blocs de code n'est exécuté.
Astuce

Les conditions logiques sont une combinaison de comparaisons, d'opérations logiques, d'expressions et de fonctions que le système d'exécution évalue pour décider si la condition est vraie ou fausse.
Le cas d'utilisation le plus courant pour les conditions logiques est après les mots-clés IF ou ELSEIF dans une IF ... ENDIF. structure.
Le premier exemple est une comparaison simple : la condition est vraie si les deux objets de données x et y ont la même valeur.
Le deuxième example est un peu plus sophistiqué: Soit la valeur de x est supérieure ou égale à y et inférieure à deux fois la valeur de y, soit elle est inférieure ou égale à y et supérieure à deux fois la valeur de y.
Le troisième exemple utilise la fonction arithmétique abs( ) et l'expression logique BETWEEN <expression1> AND <expression2>. La condition est vraie si la valeur absolue de x est comprise entre la valeur absolue de y et la valeur absolue de deux fois y.
Pour des comparaisons de valeurs simples, vous pouvez utiliser les opérateurs =, <>, >, <, >= et <=. Vous pouvez non seulement comparer les valeurs des objets de données, mais aussi les valeurs de nombreuses autres expressions, comme l'expression arithmétique 2 * y dans l'exemple.
Remarque
Vous pouvez utiliser les opérateurs AND et OR pour combiner des expressions logiques et l'opérateur NOT pour inverser une expression. Sans parenthèses, NE LIT PAS plus fort que ET et ET plus fort que OU.
ABAP connaît certaines expressions logiques spéciales :
- <objet de données> IS INITIAL est vrai si <objet de données> contient sa valeur initiale spécifique au type
- <objet de données> N'EST PAS INITIAL est vrai si <objet de données> contient une valeur différente de la valeur initiale spécifique au type.
- <objet de données> BETWEEN <expression1> AND <expression2>
Certaines fonctions ABAP spéciales sont des fonctions de prédicat. Cela signifie qu'il s'agit de conditions logiques elles-mêmes. Contient( ) est une fonction qui compare des valeurs alphanumériques et line_exist( ) effectue un contrôle d'existence pour une ligne dans une table interne.

Une deuxième technique de branchement conditionnel est la CASE … WHEN .. Structure de contrôle ENDCASE.
branchement conditionnel avec CASE .. ENDCASE est un cas particulier de branchement plus général avec IF … ENDIF. Vous pouvez utiliser CASE dans les cas où la ramification dépend de la valeur d'un objet de données individuel, que vous comparez successivement à un ensemble de valeurs possibles, à l'aide d'une comparaison égale à chaque fois.
Dans l'exemple, la valeur du numéro d'objet de données est comparée aux valeurs 1 et 2. Si la valeur est égale à 1, <code_block_1> est exécuté et si la valeur euqals 2, <code_blocl_2> est exécuté à la place. Pour toute autre valeur, le bloc de code après WHEN OTHERS est exécuté.
Toute ramification conditionnelle avec CASE … ENDCASE peut également être implémentée avec une structure IF … ENDIF. Ceci est illustré par l'exemple à droite.
Astuce


