본문 바로가기

SAP

[ABAP] abap의 scope 개념에 대해 알아보기

반응형

아래 글은 chatgpt 4o를 이용한 스터디 내용 중 일부입니다.

 

스코프(scope)는 변수나 데이터 객체가 유효한 범위를 의미합니다.

ABAP의 스코프는 크게 다음과 같이 나눌 수 있습니다.

  1. 로컬 스코프(Local Scope):
    • 서브루틴/메소드: 서브루틴(Form)이나 메소드 내부에서 선언된 변수는 그 서브루틴이나 메소드 내에서만 유효합니다. 이 변수들은 해당 블록을 벗어나면 더 이상 접근할 수 없습니다.
    • 블록: DO, WHILE, LOOP 등의 반복문이나 IF, CASE 등의 조건문 내에서 선언된 변수도 해당 블록 내에서만 유효합니다.
  2. 전역 스코프(Global Scope):
    • 프로그램/클래스: 프로그램의 시작 부분이나 클래스의 정의 부분에서 선언된 변수는 프로그램 또는 클래스 내의 모든 서브루틴이나 메소드에서 접근할 수 있습니다.
    • 모듈 풀 프로그램(Module Pool Program): 모듈 풀 프로그램 내에서 선언된 전역 변수는 그 프로그램 내의 모든 화면(Screen)과 서브루틴에서 접근 가능합니다.
  3. 패키지 스코프(Package Scope):
    • SAP 패키지 내에서 정의된 데이터 딕셔너리 객체(예: 테이블, 구조체, 타입 등)는 그 패키지 내의 모든 프로그램과 모듈에서 접근 가능합니다.
  4. 세션 스코프(Session Scope):
    • 글로벌 변수: SET/GET PARAMETER를 통해 설정된 글로벌 변수는 동일한 사용자 세션 내의 모든 프로그램에서 접근할 수 있습니다.
    • 메모리 ID: EXPORT TO MEMORY와 같은 명령어를 사용하여 설정된 메모리 ID는 동일한 사용자 세션 내의 모든 프로그램에서 접근할 수 있습니다.
  5. 스택 스코프(Stack Scope):
    • 함수 호출 시 함수의 매개변수는 호출된 함수 내에서만 유효하며 함수가 종료되면 스택에서 제거됩니다.

예시

로컬 스코프 예시

FORM example_form.
  DATA: lv_local TYPE i.
  lv_local = 1.
  WRITE: / 'Local variable:', lv_local.
ENDFORM.

전역 스코프 예시

DATA: gv_global TYPE i.

FORM example_form.
  gv_global = 1.
  WRITE: / 'Global variable:', gv_global.
ENDFORM.

세션 스코프 예시

abap코드 복사
SET PARAMETER ID 'ZVAR' FIELD 'some_value'.

GET PARAMETER ID 'ZVAR' FIELD lv_value.
WRITE: / 'Session parameter:', lv_value.

ABAP에서의 스코프 이해는 변수의 유효 범위를 명확히 하여 프로그램의 가독성과 유지보수성을 높이는 데 중요합니다.

반응형

'SAP' 카테고리의 다른 글

[MM] 자재 마스터(Material Master)  (0) 2024.06.06
[MM] 조직구조(Enterprise Structure)  (0) 2024.06.06
[EWM] Physical Inventory Documents Database  (0) 2024.03.24
[EWM] Stock Database  (0) 2024.03.23
[EWM] Inbound Delivery Database  (0) 2024.03.21