Я понимаю, что IMPORTING
и EXPORTING
ключевые слова делают, но каково значение ключевого слова CHANGING
?Каково значение ключевого слова CHANGING при вызове метода в ABAP?
ответ
IMPORTING
передает фактический параметр в качестве формального параметра, передавая значение от вызывающего к методу. EXPORTING
делает все наоборот, беря значение из метода и передавая его обратно вызывающему. CHANGING
объединяет их, передавая значение как от вызывающего к методу, так и обратно, с любыми изменениями, которые произошли между ними.
Обратите внимание, что в то время каки EXPORTING
отменены между объявлением и вызовом, CHANGING
нет.
Кроме того, при объявлении Подпрограммы с FORM
и ENDFORM
, тем CHANGING
можно использовать ключевое слово либо как CHANGING myvar
или CHANGING VALUE(myvar)
.
CHANGING myvar
делает так, чтобы значение myvar
было изменено, как только оно будет изменено в подпрограмме.
В противоположность этому, если CHANGING VALUE(myvar)
используется, если форма не возвращает должным образом (если он генерирует исключение, например), значение myvar
будет оставаться неизменным, в коде вызова, даже если она была изменена в подпрограмме что рухнул.
Таким образом, «ИЗМЕНЕНИЕ» является эквивалентом вызова ABAP по ссылке? –
@ amalantony: Нет. Во многих других языках программирования понятия «in/out/inout» и «call by value/reference» связаны, а не в ABAP. Вы можете решить, хотите ли вы передать значение или ссылку независимо от указания направления, в котором идет контент. – vwegert