오늘은 ABAP Watch point 사용법에 대해서 정리해보도록 하겠습니다.
ABAP Watchpoint 는 ABAP Break point 기능과 더불어, SAP에서 ABAP으로 개발을 할 때, 프로그램을 디버깅하고 코드를 분석하는 도구 중 하나입니다.
참고로 ABAP BREAK POINT와 관련해서는 아래의 링크를 통해 좀 더 상세한 내용을 확인할 수 있습니다.
Watchpoint의 기본 개념
ABAP Watchpoint란, 특정 변수 혹은 구조, 인터널 테이블의 특정 필드의 값 등을 모니터링 하거나 추적하고자 할 때 사용합니다.
미리 지정한 변수의 값을 감시(Watch)하고 있다가 조건에 만족하는 값(Point)이 정해졌다면 디버깅이 시작됩니다.
감시 가능한 변수의 범위는 로컬 변수나 전역 변수 뿐만 아니라 클래스의 멤버 변수 및 Function에서 사용되는 값 등 다양한 값을 조건으로 사용할 수 있습니다.
Dynamic Break Point를 명시적으로 설정하지 않더라도, 지정한 변수에 대한 조건값이 참인 경우, 해당 위치에서 자동으로 Break 가 걸리게 됩니다.
그렇기 때문에 많은 레코드 등을 담고 있는 인터널 테이블의 특정 값을 LOOP 문 등에서 찾고자 할 때 유용하게 사용할 수 있습니다.
Watch Point의 생성
Watch Point는 크게 두개의 절차로 생성할 수 있습니다.
디버깅이 실행되면 상단에 /Watchpoint/ 버튼을 클릭해 줍니다.
그러면 watchpoint를 지정할 수 있는 팝업창이 호출됩니다.
변수 정의-조건값 입력
variable 입력란에 감시하고자 하는 변수명을 지정합니다.
또, free condition entry에는 abap 구문과 비슷한 형태로 조건을 입력하면 됩니다.
기본적으로 다음과 같이 사용합니다. 만약 GT_DATA-FIELDNAME이 ‘REFTYPE’ 값인 경우 BREAK POINT를 걸고자 한다면 다음과 같이 기술하면 됩니다.
변수값의 검증 – 특정 인덱스의 값 일 때 의 예시
만약 총 30개의 인터널 테이블의 값이 있고, 29번째 데이터를 검증해야 할 사항이 있다면, LOOP를 무려 29번을 Debug Continue 버튼을 누르며 기다려야 합니다.
이럴 때 다음과 같이 Watch Point를 잡아주게 되면,
- Variable : SY-TABIX
- Free condition entry : SY-TABIX = 29
GT_DATA에 대한 LOOP SY-TABIX 값이 29일 때 자동으로 BREAK 가 걸리게 됩니다.
예를 들어 GS_LIST 자재 필드의 특정 자재의 번호가 A0000050 일 때 WATCH POINT가 필요한 경우에는 아래와 같이 입력을 해주면 됩니다.
- Variable : GS_LIST-MATNR
- Free condition entry : GS_LIST-MATNR = ‘A0000050’
Watch Point의 삭제
삭제는 Break Point Tool에서 처리할 수 있습니다. 단순히 해당 라인을 선택한 후 휴지통 버튼을 눌러주면 됩니다.
이상으로 ABAP Debugger에서 Watchpoint 사용법에 대해서 알아보았습니다. 코드 구문 분석이나 에러 사항 찾고자 할 때 유용하게 사용해 보시기 바랍니다.
Free Condition entry의 사용 예제는 아래의 SAP 공식 문서에서 확인할 수 있습니다.
함께 보면 좋은 글
sap abap 소스 검색 방법 2가지(+텍스트 스캔)