SAP 메시지가 발생한 프로그램 소스 코드 위치를 찾는 방법(Message no 활용 방법)

SAP 시스템의 트랜잭션을 사용하다 보면 수 없이 많은 경우에서 다양한 종류의 메시지를 보게 됩니다.

SAP에서 사용되는 메시지에는 단순히 오류에 의해 발생하는 오류 메시지 뿐만 아니라 경고, 안내 등의 다양한 메시지 타입이 있습니다.
SAP 메시지에 대한 정보를 더 알고 싶다면 ABAP의 Message Categories 종류 및 설명 글을 참고하시기 바랍니다.

SAP 트랜잭션을 처리하는 과정에서 오류 메시지가 발생하는 하는 경우 그 원인을 찾기 위해 프로그램 소스 코드를 알아야 하는 경우가 생길 수 있습니다.

오류가 발생하는 원인 또는 해결 방법을 찾기 위해서 ABAP 프로그램 소스의 어떤 구문에서 오류가 발생하는지 확인이 필요한 경우가 생기기 때문입니다.

메시지가 발생한 소스 코드 위치를 찾는 방법은 여러가지 있습니다.
그 중에서 이번에 소개할 내용은 개인적으로 가장 많이 사용하는 방법입니다. 다음에 기회가 되면 여기에서 소개하지 않은 다른 방법에 대해서도 포스팅 해 보겠습니다.

이번 글에서는 SAP 메시지가 발생한 프로그램 소스 코드 위치를 찾는 방법(Message no 활용 방법)에 대해 알아보겠습니다.

SAP 메시지 번호(Message no) 찾는 방법

1. 아래 화면은 CO03(생산 오더 조회) 트랜잭션에서 입력한 생산 오더가 없는 경우 에러 메시지가 표시되는 모습입니다.

2. ABAP 프로그램 소스 코드에서 해당 메시지가 발생한 위치를 찾기 위해서는 메시지 번호를 먼저 알아야 합니다.

3. 하단의 메시지가 표시된 부분에서 오류 아이콘을 클릭해 줍니다.
참고로 메시지 종류에 따라 아이콘 모양은 다르게 나타납니다.

SAP 메시지가 발생한 프로그램 소스 코드 위치를 찾는 방법(Message no 활용 방법) 1

4. Performance Assistant 대화 상자에서 메시지 번호(Message no)가 표시됩니다.

  • 메시지 클래스 ID (Message Class ID) : CO
  • 메시지 번호 (Message number) : 017
  • 이렇게 해당 메시지의 클래스 ID와 번호를 확인할 수 있습니다.
  • 모든 메시지 번호가 이처럼 클래스 ID와 번호로 구분되는 것은 아닙니다.
SAP 메시지가 발생한 프로그램 소스 코드 위치를 찾는 방법(Message no 활용 방법) 2

5. 이렇게 메시지 클래스 ID와 번호를 찾았다면 이제 ABAP 프로그램 소스 코드에서 해당 메시지의 위치를 찾아 보겠습니다.

ABAP Debugger 세션에서 Breakpoints를 사용하여 메시지 발생 위치를 찾는 방법

1. 상단 명령어 필드(Command field) /H 또는 /h 입력하고 엔터를 눌러 디버깅 모드를 설정합니다.

  • 디버깅이 설정되면 트랜잭션이 바로 실행되지 않고 Debugger Session 모드로 열리게 됩니다.
SAP 메시지가 발생한 프로그램 소스 코드 위치를 찾는 방법(Message no 활용 방법) 3

2. 아래 화면은 트랜잭션을 실행했을 때 ABAP Debugger Controls Session 화면으로 실행된 모습입니다.

3. Break./Watchpoints 탭을 선택하고, 다시 아래에서 Breakpoints 탭을 선택합니다.

4. 중단점(Breakpoints)을 새로 만들기 위해 ③번의 생성(Create Breakpoint) 아이콘을 클릭합니다.

SAP 메시지가 발생한 프로그램 소스 코드 위치를 찾는 방법(Message no 활용 방법) 4

5. Create Breakpoints 대화 상자에서 마지막에 있는 Message 탭을 선택합니다.

6. ID에는 앞 단락에서 찾았던 Message Class ID를 입력해 줍니다.

7. Number에는 역시 앞 단락에서 찾았던 메시지 번호를 입력해 줍니다.

8. Ty.에는 Message Type을 선택해 줍니다. 생략해도 되지만 좀 더 정확한 위치를 찾기 위해 Type을 지정해 주는 것이 좋습니다.
Type 종류는 ABAP의 Message Categories 종류 및 설명 글을 참고하세요.

9. ③번 계속(Continue) 버튼을 클릭해서 Breakpoints를 만듭니다.

SAP 메시지가 발생한 프로그램 소스 코드 위치를 찾는 방법(Message no 활용 방법) 5

10. 아래 화면처럼 Breakpoints가 하나 만들어진 것을 확인할 수 있습니다.

SAP 메시지가 발생한 프로그램 소스 코드 위치를 찾는 방법(Message no 활용 방법) 6

11. Desktop 1 탭을 선택하고, 계속실행(F8)를 눌러 실행하면 MESSAGE E017이 있는 위치에 Cursor가 멈추게 됩니다.

SAP 메시지가 발생한 프로그램 소스 코드 위치를 찾는 방법(Message no 활용 방법) 7

ABAP Debugger 세션에서 Watchpoint를 사용하여 메시지 발생 위치를 찾는 방법

1. 앞 단락을 참고해서 ABAP Debugger Controls Session 화면을 엽니다.

2. Break./Watchpoints 탭을 선택하고, 다시 아래에서 Watchpoints 탭을 선택합니다.

3. 감시점(Watchpoints)을 새로 만들기 위해 ③번의 생성(Create Watchpoint) 아이콘을 클릭합니다.

SAP 메시지가 발생한 프로그램 소스 코드 위치를 찾는 방법(Message no 활용 방법) 8

4. Create Watchpoint 대화 상자가 열리게 됩니다.

5. Variable에는 ‘SY-MSGNO‘라고 입력합니다. SY-MSGNO는 메시지 번호를 받는 시스템 변수 입니다.

  • 시스템 변수에 대한 설명 글은 아래 도움이 될 만한 다른 포스팅 중에서 ABAP System Fields의 글을 참고하세요.

6. 하단의 Condition의 Free Condition Entry:에 메시지 번호를 찾기 위한 조건식 = ‘017’ 입력합니다.

SAP 메시지가 발생한 프로그램 소스 코드 위치를 찾는 방법(Message no 활용 방법) 9

7. 아래 화면에서 ConditionSY-MSGNO = ‘017’로 Watchpoints 새로 만들어진 것을 확인할 수 있습니다.

SAP 메시지가 발생한 프로그램 소스 코드 위치를 찾는 방법(Message no 활용 방법) 10

8. 이후 작업은 앞 단락의 11번 작업과 동일합니다.

마무리

이 글에서 설명한 Breakpoints 또는 Watchpoints에 대한 자세한 설명은 ABAP 프로그램에서 조건부 중단점(Break points)을 설정하는 방법 4가지 글을 참고하시기 바랍니다.

모든 경우에 대해 Breakpoints 또는 Watchpoints로 메시지가 있는 소스 코드 위치를 바로 찾을 수 있는 것은 아닙니다.
두 가지 방법 중 하나만 적용되기도 하고, 둘 다 적용이 안 될 수도 있습니다.

그리고 첫 번째로 찾은 위치가 정확하게 원하는 위치가 아닐 수도 있습니다.
한 프로그램 내에서도 동일한 메시지를 여러 곳에서 사용할 수 있기에 실행을 계속 진행해서 찾고자 하는 정확한 위치를 찾아야 할 수도 있습니다.





이 글이 도움이 되었기를 바랍니다. ^-^
댓글로 흔적을 남겨 주세요.

답글 남기기