본문 바로가기

SAP/Error

ABAP Dump Runtime Error ALV 덤프 발생할 때

부제 : ABAP programming error UC_OBJECTS_NOT_CONVERTIBLE

 

안녕하세요, D 입니다.

 

 

오늘은 ALV 생성 시 종종 만날 수 있는 덤프 해결법에 대해 간단히 살펴보겠습니다.

 

아밥에서 발생하는 오류는 크게 두 종류로 나눌 수 있습니다.

프로그래밍 Ctrl+F3 을 눌렀을 때 컴파일이 안된다고 나타나는, 컴파일 시 발생하는 오류인 신택스 에러와

프로그램 실행 시, F8 을 눌렀을 빨간 화면과 함께 나타나는 런타임 에러로 나누어집니다.

이 런타임 에러를 흔히 덤프, 덤프 떴다라고 표현합니다.

 

신택스 에러는 설명이 보다 직관적이고 바로바로 수정하여 재실행할 수 있는 반면

덤프는 발생 시 처음 화면으로 나가지기에 프로그램을 다시 찾아와야 하는 번거로움이 있습니다.

더불어 프로그램이 문제없이 잘 돌아가는 줄 알았는데, 에러라는 배신감도 함께 밀려와 더욱 짜증 나기도 하지요.

 

 

오늘 다룰 런타임 에러는 UC_OBJECTS_NOT_CONVERTIBLE 이라는 타이틀로

주로 ALV와 아직 익숙하지 않을 때 종종 만날 수 있는 에러입니다.

 

 

UC_OBJECTS_NOT_CONVERTIBLE 런타임 오류를 처음 마주치면

나는 이런 코드를 쓴 적이 없는데, MOVE src TO dst 가 무슨 뜻이야, 아밥하지 말까, 뭐가 잘못된건지 모르겠어 등의

막막하고 속상한 마음이 들곤 합니다.

 

하지만 해당 덤프 상당히 간단한 문제일 가능성이 높습니다.

 

UC_OBJECTS_NOT_CONVERTIBLE  덤프는 대부분 필드카탈로그, FCAT 과 관련된 에러일 가능성이 높습니다.

그렇다면 FCAT 생성 부분의 코드를 살펴봅시다.

 

 

해당 코드를 작성한 친구는 공교롭게 금액 필드를 작성하지 않았군요.

많은 경우 UC_OBJECTS_NOT_CONVERTIBLE 에러는 금액, 통화와 관련된 필드카탈로그 에러일 수 있으니

금액, 통화 필드가 있다면 필드카탈로그 부분을 더욱 유심히 확인해 보시길 바랍니다.

 

 

그렇다면 이번 덤프는, 이 프로그램은 어디가 문제일까요.

오브젝트 선언부와 call method 부분도 확인해 보았지만 이상이 없어 보입니다.

 

 

 

그렇다면 선언부는 어떨까요?

인터널 테이블 선언 부분을 확인해 보니, 이런 필드 선언을 잘못했군요.

 

 

carrid TYPE sbook 이라니, 이렇게 선언하면 해당 carrid 는 스트럭처 필드가 됩니다.

carrid TYPE sbook-carrid 로 선언해야 한 칸이 되는 것을

carrid TYPE sbook 으로 선언하니 한 줄을 한 칸에 담은 셈이 된 것입니다.

 

 

해당 코드를 수정하니 프로그램이 아래처럼 매우 잘 실행되었습니다.

 

 

남이 보면 이렇게 간단한 문제인 것을 내가 내 코드를 보면 헤매곤 합니다.

내가 처음 할 때 당연히 잘했겠거니 싶어 그저 지나치는 부분인 것이죠.

 

 

이렇게 답답하고 눈앞이 흐릿해질 때는 잠시 노트북을 덮고

물 한 잔 마시고 스트레칭 쭉 한 번 하고 다시 돌아와 처음부터 다시 찬찬히 보는 것이 좋습니다.

 

물론 서로 도움 받을 수 있는 친구가 있다면 서로의 코드를 봐줄 수도 있겠죠.

피어 리뷰는 친구를 돕기도 하고 내 코드도 향상할 수 있는 좋은 기회인 듯합니다.

 

이렇게 간단히 UC_OBJECTS_NOT_CONVERTIBLE 런타임 에러를 해결해 보았습니다.

 

 

감사합니다.