Как использовать abap логическое выражение if

Я знаю, что у abap нет реального логического типа. Вместо этого используются "X" и "". До этого времени я всегда использовал выражение if таким образом:

IF myObj->is_sth( ) = abap_true.

ENDIF.

Теперь я сделал что-то вроде этого:

IF myObj->is_sth( ).

ENDIF.

И мне интересно, что это похоже на работу. Тип возвращаемого значения - логическое. Я на Netweaver 7.4. Могу ли я использовать это без проблем? Это как мой прекрасный C# пишет: с.

1 ответ

Решение

Это называется предикативным вызовом метода:

Предикативный вызов метода - это реляционное выражение, единственным операндом которого является функциональный вызов метода meth (...). Результат реляционного выражения имеет значение true, если результат вызова функционального метода не является начальным, и false, если результат вызова функционального метода является начальным. Результат вызова функционального метода (возвращаемое значение вызванного метода функции) может иметь любой тип данных. Проверяется начальное значение, дружественное к типу.

Предикативный вызов метода, как и любое реляционное выражение, может быть полным логическим выражением или частью логического выражения. Это означает, что его можно указывать в качестве условия в управляющих операторах и других операторах, в качестве аргумента в булевых функциях или условных выражениях или в соединениях с булевыми операторами.

Это было введено в 7.40 SP08. Имейте в виду, что это работает надежно, только если начальное значение равно false, а false - это начальное значение. Например, IS-H использует символьное поле, где 0 ложно и 1 имеет значение true, но поскольку начальное значение символьного поля является пробелом, это не является ни истиной, ни ложью, поэтому использование любого метода, который возвращает это значение, всегда будет переходить так, как если бы метод возвратил true...

Другие вопросы по тегам