TRY~CATCH 구문
: 오류가 발생 할시, 프로그램이 에러로 뻗지 않게 잡아주는 안전장치
- 쉽게 말해, 에러 날 것 같은 코드를 TRY 안에 넣고, 에러 나면 CATCH에서 잡아서 처리
✅ TRY
: 에러 발생 가능성 있는 코드 작성 구간
- DB 접근, 클래스 메소드 호출, 파일처리, 계산 등
✅ CATCH
: 발생한 예외 클래스(Exception Class) 를 잡는 부분
| 예외 클래스 | 의미 |
| cx_sy_zerodivide | 0으로 나누기 |
| cx_sy_itab_line_not_found | READ TABLE 실패 |
| cx_sy_conversion_error | 형변환 실패 |
| cx_root | 모든 예외의 부모 (최후 방어막) |
- CATCH ~ INTO (변수). GET_TEXT ( ).
: 예외 클래스에서 후에는 예외로 나온 메세지 변수에 담아준다.
- CATCH ~ INTO (변수). GET_LONGTEXT ( ).
: 예외 클래스에서 후에는 예외로 나온 상세 메세지 변수에 담아준다.
✅ CLEARUP
: EXCEPTION 발생한 구문에 대한 변수 값을 CLEAR 처리
사용 예시
- INPUT 값이 10 으로 나뉘어지는지 결과보기
PARAMETERS: PV_INPUT TYPE I.
DATA: LV_RESULT TYPE P LENGTH 10,
LV_TEXT TYPE STRING,
LV_LTEXT TYPE STRING.

- TRY ~ CATCH 구문
TRY.
" 에러 발생 가능 구간
LV_RESULT = 10 / PV_INPUT.
CATCH CX_SY_ZERODIVIDE INTO DATA(LX_ZERO). " 나누기
LV_TEXT = LX_ZERO->GET_TEXT( ).
LV_LTEXT = LX_ZERO->GET_LONGTEXT( ).
CATCH CX_SY_CONVERSION_NO_NUMBER INTO DATA(LX_CONV). " CHAR 변환
LV_TEXT = LX_CONV->GET_TEXT( ).
LV_LTEXT = LX_CONV->GET_LONGTEXT( ).
CATCH CX_ROOT INTO DATA(LX_ROOT). " 그외
LV_TEXT = LX_ROOT->GET_TEXT( ).
LV_LTEXT = LX_ROOT->GET_LONGTEXT( ).
ENDTRY.
WRITE: / 'GET_TEXT 결과: ', LV_TEXT.
WRITE: / 'GET_LONGTEXT 결과: ', LV_LTEXT.
TEST
- 1 입력 시, CATCH 잡히는 것 없기에. 공백

- TEST: 0 입력 시, CATCH CX_SY_ZERODIVIDE 걸림

- 끝
'SAP' 카테고리의 다른 글
| SAP MM 구매 정보 레코드 PIR 삭제 (0) | 2026.02.25 |
|---|---|
| SAP MMAM 자재 유형 (Material Type) 변경 (0) | 2026.02.24 |
| SAP MM ABAP PO 구매오더 CBO 필드 추가 (0) | 2026.02.11 |
| SAP ABAP MIGO 확장, 자재 전표 BADI [MB_MIGO_BADI] (0) | 2026.02.09 |
| SAP ICON 아이콘 (상태/기능/가시성/업무속도 올리기) (0) | 2026.02.06 |