2013-04-27 1 views

ответ

6

IMPORTING передает фактический параметр в качестве формального параметра, передавая значение от вызывающего к методу. EXPORTING делает все наоборот, беря значение из метода и передавая его обратно вызывающему. CHANGING объединяет их, передавая значение как от вызывающего к методу, так и обратно, с любыми изменениями, которые произошли между ними.

Обратите внимание, что в то время каки EXPORTING отменены между объявлением и вызовом, CHANGING нет.

+0

Таким образом, «ИЗМЕНЕНИЕ» является эквивалентом вызова ABAP по ссылке? –

+2

@ amalantony: Нет. Во многих других языках программирования понятия «in/out/inout» и «call by value/reference» связаны, а не в ABAP. Вы можете решить, хотите ли вы передать значение или ссылку независимо от указания направления, в котором идет контент. – vwegert

4

Кроме того, при объявлении Подпрограммы с FORM и ENDFORM, тем CHANGING можно использовать ключевое слово либо как CHANGING myvar или CHANGING VALUE(myvar).

CHANGING myvar делает так, чтобы значение myvar было изменено, как только оно будет изменено в подпрограмме.

В противоположность этому, если CHANGING VALUE(myvar) используется, если форма не возвращает должным образом (если он генерирует исключение, например), значение myvar будет оставаться неизменным, в коде вызова, даже если она была изменена в подпрограмме что рухнул.