DATA: BEGIN OF G06 OCCURS 0,
PREV_AMT LIKE FAGLFLEXT-HSL01,
PLUS_AMT LIKE FAGLFLEXT-HSL01,
MINUS_AMT LIKE FAGLFLEXT-HSL01,
BOOKS_AMT LIKE FAGLFLEXT-HSL01,
REST_AMT LIKE FAGLFLEXT-HSL01,
END OF G06.
G06-PREV_AMT = '-15228190357'.
G06-PLUS_AMT = '-134796443326'.
G06-MINUS_AMT = '-135605472937'.
G06-REST_AMT = G06-PREV_AMT + G06-PLUS_AMT.
G06-BOOKS_AMT = G06-PREV_AMT + G06-PLUS_AMT - G06-MINUS_AMT.
write:/ GT_DATA06-REST_AMT,'|',GT_DATA06-BOOKS_AMT.
150,024,633,683.00- 14,419,160,746.00-
레포트에서 계산을 하면 위의 write처럼 결과값이 잘 나옵니다.
그런데 ALV 프로그래밍된 화면에서 값을 넣으면..즉 입력 화면 필드순서는..
G06-PREV_AMT ,G06-PLUS_AMT ,G06-MINUS_AMT ,G06-BOOKS_AMT 이렇게 되어 있습니다.
문제는 G06-PREV_AMT 에 -15228190357 를 넣고 엔터를 치면 G06-BOOKS_AMT 필드에 -15228190357 값이 들어옵니다.
그런데 G06-PLUS_AMT 에 -134796443326를 넣고 엔터를 치면 G06-BOOKS_AMT 값이 150,024,633,683.00- 로 변해야 하는데 변하지 않고 -15228190357 로 그대로 입니다.
G06-PLUS_AMT 값이 현재 부호까지 13자리 인데요..부호까지 12자리를 입력하면 G06-BOOKS_AMT값이 정상적으로 결과가 나옵니다.
ALV쪽에 근본적인 문제 인지 아니면 처리해 주는 로직이 있는지 궁금 합니다.
감사합니다.
댓글 4
-
덩콘
2010.07.24 02:56
-
남산밑
2010.07.24 03:15
type p는 20자리가 허용이 안되죠..
-
맑은하늘
2010.07.26 18:23
선언된 필드는 23.2 자리 output 32 의 curr 필드인것 같네요. 문제는 되지 않을 것 같습니다.
(sap 버전 ecc 6.0 입니다. 낮은 버전에서는 자리가 작을지도 모르겠네요. ^^;; 확인해 볼 수 가 없군요)
data changed 이벤트에서 계산이 제대로 되는 지 확인해보시구요. 필드카탈로그 선언하실 때
LS_FCAT-REF_FIELD = 'HSL01'.
LS_FCAT-REF_TABLE = 'FAGLFLEXT'.
로 참조했을 때와 같은지 확인해 보세요. length = 23. decimails = 2. outputlen = 32. 아마도 이렇게
설정이 될 거예요.
-
남산밑
2010.08.11 23:41
맑은 하늘님 감사합니다.
필드 카탈로그 정의시 필드와 테이블이 구버전으로 정의 되어 있었네요..
수고하세요~~
G06 선언부를 참조로 하지마시고 type 으로 선언해서 자릿수 늘려서 해보세요
PREV_AMT(20) type p decimals 2,
이런식으로요
자세히는 안봤는데 아마 FAGLFLEXT-HSL01의 자릿수가 13자리라서 나오는 문제로 보입니다