- 개념:
ABAP에서 반복되는 코드 블록을 이름 붙여서 재사용할 수 있게 해주는 기능/ 작은 템플릿 함수처럼 쓰이지만, 함수나 서브루틴과 다르게 컴파일 타임에 코드가 삽입된다.
DEFINE <macro_name>
" 반복코드
END-OF-DEFINITION.
같은 WRITE문 여러번 쓰기
DEFINE show_line.
WRITE: / '------------------------'.
END-OF-DEFINITION.
START-OF-SELECTION.
WRITE: / 'Start'.
show_line.
WRITE: / 'Middle'.
show_line.
WRITE: / 'End'.
출력결과:
Start
------------------------
Middle
------------------------
End
매개변수 있는 MACRO예시
DEFINE print_name.
WRITE: / 'Hello', &1.
END-OF-DEFINITION.
print_name 'Konie'.
print_name 'Wonie'.
Hello Konie
Hello Wonie
항목 | PERFORM | MACRO |
🔧 정의 방식 | FORM ... ENDFORM. | DEFINE ... END-OF-DEFINITION. |
🕐 처리 타이밍 | 런타임에 호출 | 컴파일 타임에 코드가 복붙됨 |
🧠 가독성/디버깅 | 잘됨 (단위 기능으로 분리, 디버깅 가능) | 힘듦 (그냥 코드 복사라 디버깅 어려움) |
🔁 재사용 가능성 | 높음 (다양한 값 전달, 구조 분리) | 낮음 (단순 반복 코드 대체) |
📦 매개변수 | USING, CHANGING, RETURNING 등 지원 | &1, &2 … 위치값만 사용 |
🧬 모듈화 가능성 | 높음 (다른 프로그램에도 INCLUDE 가능) | 낮음 (로컬에 국한됨) |
🚫 남용 시 문제 | 적음 (잘 정리됨) | 많음 (가독성 ↓, 예외처리 어려움) |
🧪 테스트/디버깅 | 좋음 (브레이크포인트 가능) | 어려움 (브레이크포인트 안 됨) |
그래도 너무 헷갈리는 PERFORM VA MACRO
- PERFORM은 논리단위를 정의하고 호출
- MACRO는 문자열 대체다. (반복적인 구문에 유용함)
- 조건문, 반복문, 로직, 데이터베이스, 유지보수가 중요한 경우에는 PEFRORM을 써야한다!
Global-Macro
INCLUDE해서 Global Macro받아오면 되는데, 처음에 이렇게 했을 때는 오류가 났다.
그 이유는 바로,
"Each ABAP program can contain only one "REPORT", "PROGRAM", or "FUNCTION-POOL" statement."
이 에러때문이였는데, 하나의 아밥 프로그램에서는 report를 한번만 해야하는데, MACRO에서 report하고 있기 때문.
지우니까 바로 결과물이 잘 나오는 것을 확인할 수 있었다!
'SAP' 카테고리의 다른 글
easy abap 23. Internal Table 정의, 생성 (0) | 2025.05.11 |
---|---|
easy abap - 22. Function Module & Function Group (0) | 2025.05.11 |
easy abap 20. subroutine 종료 & 분기조건문 (0) | 2025.05.10 |
easy abap 19. ABAP 내의 순환반복문 3가지 (0) | 2025.05.10 |
easy abap 18. subroutine (0) | 2025.05.10 |