[ABAP] USING / CHANGING

홍예림·2023년 7월 25일
0

SAP ABAP(개편중...)

목록 보기
36/55
post-thumbnail

PERFORM 구문과 FORM 구문 사이에 값을 주고받기 위해(공유하기 위해) 사용합니다. 이때 주고받는(공유하는) 값을 파라메터(매개변수)라고 합니다.

  • PERFORM과 FORM 간에 공유되는 파라메터는 개수, 선언순서가 동일해야 합니다.
  • FORM 구문 내에서 사용되는 파라미터는 로컬 변수로, FORM문이 종료되면 사라집니다.

USING VS CHANGING

USING (+VALUE)CHANGINGUSING (VALUE없음)
전달방법call by valuecall by referencecall by reference
데이터 활용전달전달 & (리시버의)변경전달 & (리시버의)변경
전달데이터 값데이터의 주소데이터의 주소
자신의 메모리가짐가지지 않음가지지 않음
Actual Parameter (PERFORM)영향 X변경됨변경됨
Formal Parameter (FORM)변경됨변경됨변경됨
  • 자신의 메모리를 가지지 않으므로, 변수 이름에다가 작업하게 된다. 따라서 파라메터에 할당된 데이터가 변경된다.
  • USING 사용 시 FORM문에서 VALUE를 작성하지 않으면, 자신의 메모리를 가지고 연산을 돌릴 이 없기 때문에 Call by Reference로 작동하게 된다.

🔖가독성 측면의 차이점

PERFORM get_carrname USING gs_spfli-carrid   <" ------ 인자로 이것을 사용하고>
                     CHANGING gs_spfli-carrname. <" -- 결과는 이것이 바뀐다.>
  • FORM문에서 VALUE구문을 사용하지 않으면 PERFORM문에서 USING/ CHANGING 모두 CALL BY REFERENCE로 작동하지만, USING/CHANGING을 구분함으로써 코드를 볼 때 어떤 인자를 이용-결과로 어떤 것이 바뀌는지 한 눈에 보인다.

USING이 적합한 경우

  • 센더가 값만 전해주고 그 이후에 변경되지 않음
    • 위 FORM을 문법에 딱 맞춘 코드 :

USING ~.

PERFORM <서브루틴명> USING VALUE <> TYPE <타입정의>.
FORM <서브루틴명> USING <pv_파라메터명> TYPE <타입정의>.

  • <pv_파라메터명>는 지역변수가 된다.

파라메터 여러개 선언하기

profile
SYNC 3기 5반 2023.07 - 2023.12

1개의 댓글

comment-user-thumbnail
2023년 7월 25일

좋은 글 감사합니다.

답글 달기