예제 14-4 코드에서
c1 DEFINITION에서
set_data IMPORTING p_imp
get_data EXPORING p_exp
라고 정의 되어있고,
CREATE OBJECT에서는
CALL METHOD : go_cref->set_data EXPORTING p_imp = 'Test Class Method'.
CALL METHOD : go_cref->get_data IMPORTING p_exp = GV_DATA.
WRITE gv_data.
라고 명시되어있는데,
1) 왜 위아래의 IMPORTING과 EXPORTING의 위치가 다른가요?
2) gv_data는 어떻게 나오게 되었는지, 원리가 궁금합니다.(결과값이 Test Class Method가 나오게되는 원리)
댓글 5
-
e-abap
2013.03.04 21:01
-
lookie87
2013.03.05 17:50
EXPORTING p_imp = 'Test Class Method'. 에서는 p_imp 에 'Test Class Method'. 가 할당되는데..(오른쪽에서 왼쪽으로 값 할당)
IMPORTING p_exp = GV_DATA. 에서는 p_exp의 값을 gv_data 변수에 할당한다는 뜻이라고 말씀해주셨는데
원래 할당 연산자(=) 기준으로 오른쪽에서 왼쪽으로 할당하는 것으로 알고있는데,
그렇다면 IMPORTING p_exp = GV_DATA. 는 gv_data의 값을 p_exp에 할당하는 것이 맞는 표현 아닙니까..?
EXPORTING과 IMPORTING 이 할당 연산자(=)의 방향에 영향을 미치는건가요/...?
초보 아밥유저라 궁금한점이 너무도 많네요..답변해주시면 감사하겠습니다.
-
e-abap
2013.03.05 02:47
IMPORTING p_exp = GV_DATA. 구문이 GV_DATA의 값을 p_exp에 할당하라는 말인가요..?
=> p_exp의 값을 gv_data 변수에 할당하라는 뜻입니다.
아래 메소드에서 p_exp 변수에 l_char 값을 넣어주게 됩니다.
METHOD GET_data.
P_exp = L_CHAR.
ENDMETHOD.l_char 값은 다음 메소드를 통해서 값이 할당됩니다.
CLASS c1 IMPLEMENTATION.
METHOD set_data.
l_char = p_imp.
ENDMETHOD. -
lookie87
2013.03.04 21:36
그러면
CALL METHOD: go_cref->get_data
IMPORTING p_exp = GV_DATA.
에서
IMPORTING p_exp = GV_DATA. 구문이 GV_DATA의 값을 p_exp에 할당하라는 말인가요..?
그렇다면 GV_DATA의 값은 선언만 되었지 그 앞에서 값이 할당 되지 않았는데, 어떻게 p_exp에 할당이 될 수 있나요...?
IMPORTING GV_DATA = p_exp. 구문이 맞는 구문아닌가요..?
제가 잘 못이해하고있는 부분이 있다면 설명해주시면 감사하겠습니다.
-
uyuy
2013.03.22 05:04
that is good!
IMPORTING과 EXPORTING이 다른 것은 주는 입장과 받는 입장이 달라지기 때문입니다.
다음 메소드를 호출하면서, 변수에 값을 저장하기 때문에 결과값이 그렇게 나오게 됩니다.
CALL METHOD: go_cref->set_data
EXPORTING p_imp = 'Test Class Method'.