SAP에서 Data Overflow(데이터 오버플로우) 덤프가 발생하는 주요 원인

 

주로 발생될 수 있는 원인

 

1. 데이터 타입의 크기 초과

DATA: lv_amount TYPE p LENGTH 5 DECIMALS 2.
lv_amount = 1234.56. " LENGTH 5 → 총 5자리만 가능, 소수점 2자리 포함 → 최대값 999.99

 

2. 연산 결과가 허용 범위를 초과

DATA: lv_total TYPE i.
lv_total = 2_000_000_000 + 1_500_000_000. " TYPE I (정수) 최대값 2,147,483,647

3. 잘못된 소수점 정의

DATA: lv_price TYPE p LENGTH 5 DECIMALS 2.
lv_price = 999.99. " 허용됨
lv_price = 1000.00. " 정수부 3자리 필요 → Overflow 발생

 

4. 내부 테이블/배열 초과

 

  • 설명: 데이터 구조보다 더 많은 데이터를 넣으려고 할 때 발생
  • 예시:
    • 테이블에 정의된 구조보다 큰 문자열을 넣거나
    • CHAR(10) 필드에 15자리 문자열을 넣는 경우

 

5. 타입 변환 오류

DATA: lv_i TYPE i.
DATA: lv_p TYPE p LENGTH 5 DECIMALS 0.
lv_i = 123456.
lv_p = lv_i. " lv_p 최대값 99999 → Overflow 발생

 

체크 포인트

  • Tcode ST22 (ABAP Short Dump)에서 덤프 상세 확인 → 어떤 필드에서 overflow 났는지 명시됨.
  • SE37/SE80에서 해당 RFC, 함수 모듈, 프로그램 확인
  • BCD_FIELD_OVERFLOW - SAP RFC 호출 중 ABAP 쪽에서 BCD_FIELD_OVERFLOW 덤프가 난 경우

정리

  • 주요 원인:
    1. 데이터 타입 허용 범위 초과 (LENGTH, DECIMALS)
    2. 산술 연산 결과가 범위를 넘음
    3. 타입 변환 시 범위 초과
    4. 외부 입력 데이터가 범위를 초과
  • 예방 방법:
    • 데이터 타입 정의 시 최대값 확인
    • 연산 전 값 범위 체크
    • 입력값 검증