2017-08-22 6 views
2

Je sais que abap n'a pas de véritable type booléen. Au lieu de cela «X» et «» est utilisé. Jusqu'à ce moment, j'ai toujours utilisé une instruction if de cette façon:Comment utiliser abap boolean dans if instruction

IF myObj->is_sth() = abap_true. 

ENDIF. 

Maintenant, je fait quelque chose comme ceci:

IF myObj->is_sth(). 

ENDIF. 

Et je me demande que cela semble fonctionner. Le type de retour est booléen. Je suis sur Netweaver 7.4. Puis-je l'utiliser sans problèmes? C'est comme ma belle écriture en C#: p.

Répondre

4

Ceci est appelé un predicative method call:

Un appel de méthode predicative est une expression relationnelle dont le seul opérande est un méth appel de méthode fonctionnelle (...). Le résultat de l'expression relationnelle est vrai si le résultat de la méthode fonctionnelle appel n'est pas initial et faux si le résultat de la méthode fonctionnelle appel est initial. Le résultat de l'appel de méthode fonctionnelle (la valeur de retour de la méthode de fonction appelée) peut avoir n'importe quel type de données. Un contrôle est effectué sur la valeur initiale de type.

Un appel de méthode prédicative, comme toute expression relationnelle, peut être une expression logique complète ou une partie d'une expression logique. Cela signifie que peut être spécifié comme condition dans les instructions de contrôle et autres instructions , en tant qu'argument dans les fonctions booléennes ou expressions conditionnelles , ou dans les jointures avec des opérateurs booléens.

Ceci était introduced in 7.40 SP08. Sachez que cela ne fonctionne que si la valeur initiale est false et false est la valeur initiale. Par exemple, IS-H utilise un champ de caractères où 0 est faux et 1 est vrai - mais comme la valeur initiale d'un champ de caractère est un espace, ce n'est ni vrai ni faux, donc l'utilisation de toute méthode qui renvoie cette valeur sera toujours ramifiée comme si la méthode était vraie ...