SAP ABAP/기본

메시지 클래스 - Dialog Messages

물꼬_ 2025. 1. 15. 19:43

📘 메시지 클래스 - Dialog Messages


Dialog Messages란?

SAP 프로그램에서 메시지(Dialog Message)는 사용자와의 상호작용을 위해 다양한 형태의 알림창을 제공한다.

메시지는 프로그램의 실행 상태에 따라 화면에 표시되며, 모달 대화상자(Modal Dialog Box)나 상태바(Status Bar)에 나타날 수 있다.

➡️ 메시지는 주로 MESSAGE 문을 통해 사용된다.


📌 MESSAGE 구문 형식

MESSAGE {nnn}(message_class) {WITH [v1] [v2] [v3] [v4]}.

  • nnn: 메시지 번호 (001, 002 등).
  • message_class: 메시지 클래스 이름.
  • WITH [v1] [v2] [v3] [v4]: 변수 값을 메시지에 삽입할 때 사용 (최대 4개).

메시지 유형(Type)과 동작(Behavior)

I (Info) 정보 메시지 프로그램이 중단 없이 계속 실행 모달 대화상자 (Modal Dialog Box)
S (Set Message) 상태 메시지 프로그램이 중단 없이 계속 실행 상태바 (Status Bar)
W (Warning) 경고 메시지 상황에 따라 다르게 작동 상태바 (Status Bar)
E (Error) 오류 메시지 상황에 따라 다르게 작동 모달 대화상자 (Modal Dialog Box)
A (Abort) 프로그램 종료 메시지 프로그램 강제 종료 모달 대화상자 (Modal Dialog Box)
X (Short Dump) 런타임 오류 메시지 프로그램이 런타임 오류(Short Dump) 발생 Short Dump

➡️ 주요 메시지 유형 설명:

  1. I (Info): 단순한 정보 메시지.
  2. S (Set Message): 상태바에 표시되는 메시지.
  3. W (Warning): 경고 메시지. 사용자 입력을 재확인하거나 경고할 때 사용.
  4. E (Error): 오류 메시지. 프로그램 실행을 멈추고 오류를 알려줌.
  5. A (Abort): 심각한 오류 발생 시 프로그램을 종료함.
  6. X (Short Dump): 심각한 런타임 오류가 발생할 경우, 시스템이 자동으로 Short Dump를 생성함.

메시지 클래스 만들기 (Message Class 생성)

📍 메시지 클래스 생성 절차

  1. Package 우측 클릭CreateOtherMessage Class 선택.
  2. Attributes / MessagesMessages를 클릭하고 YES 선택.
  3. 메시지를 입력 후 저장.

📌 메시지 클래스 생성 시 주의사항

  • 메시지 클래스 이름은 반드시 Y 또는 Z로 시작해야 한다.
  • 메시지 작성 시, 메시지에 변수(&)를 추가할 수 있다.
    • 최대 4개 변수까지 사용할 수 있으며, WITH 구문을 사용해 변수 값을 삽입한다.
    • 예:
    • MESSAGE i000 WITH 'Hello' 'World'.
  • 메시지 클래스 이름은 MESSAGE 문에서 생략할 수 있다.

📍 메시지 입력 예시

001 프로그램이 성공적으로 완료되었습니다.
002 입력값이 잘못되었습니다.
003 사용자 이름: &.

➡️ WITH 구문을 사용하여 메시지에 변수 삽입:

MESSAGE i003 WITH '홍길동'.

💡 출력 결과: "사용자 이름: 홍길동"

 


메시지 클래스 활용 팁

  1. 메시지 클래스 생성 후, 메시지 번호를 더블클릭하면 메시지 내용을 편집할 수 있다.
  2. 메시지 번호는 최대 4자리까지 사용 가능하며, 숫자와 영어 조합으로도 작성할 수 있다.
  3. 메시지 클래스에서 생성한 메시지는 Text Elements에서 확인할 수 있다.

메시지 클래스와 MESSAGE 구문 사용 예시

📍 메시지 클래스: ZMSG_CLASS 생성

001 "사용자 이름이 입력되지 않았습니다."
002 "프로그램이 성공적으로 완료되었습니다."

📍 프로그램에서 MESSAGE 사용 예시

REPORT ZABAP_MESSAGE.

DATA: lv_name TYPE string.

IF lv_name IS INITIAL.
    MESSAGE e001(ZMSG_CLASS).
ENDIF.

lv_name = '홍길동'.
MESSAGE i002(ZMSG_CLASS).

💡 실행 결과:

  • lv_name이 비어 있으면 오류 메시지(E001)가 출력된다.
  • lv_name에 값이 할당되면 정보 메시지(I002)가 출력된다.

팁 정리

  • Y 또는 Z로 시작하는 메시지 클래스를 생성해야 한다.
  • 메시지 클래스에서 메시지를 작성할 때 **변수(&)**를 사용하여 동적인 메시지를 만들 수 있다.
  • 프로그램에서 MESSAGE 문을 사용하여 메시지를 출력하며, 메시지 유형에 따라 다르게 동작한다.
  • 메시지 클래스는 굳이 프로그램 내에서 명시하지 않아도 사용할 수 있다.