* H_HSL_SUM이 0보다 작을 때는 ' 123,456.00-' 대신
* ' ▲123,456' 으로 표시하게 한다.
DATA: UNIT_LEN TYPE I,
CHK_ZERO TYPE I,
D_LEN(1),
U_LEN(1).
IF H_HSL_SUM < 0.
* 먼저 H_HSL_SUM을 부호와 소숫점없이 화면에 WRITE한다.
WRITE AT POS1(LEN1) H_HSL_SUM DECIMALS 0 NO-SIGN.
* 'CURR' TYPE인 H_HSL_SUM을 'CHAR' TYPE인 C_HSL_SUM으로 복사한다.
* EX) ' 123,456.00-' 를 ' 123456.00-'
C_HSL_SUM = H_HSL_SUM.
* 왼쪽의 SPACE를 없앤다. EX) ' 123456.00-' 을 '123456.00- '로 만든다.
SHIFT C_HSL_SUM LEFT DELETING LEADING SPACE.
* '-'의 위치값을 알아낸다. 즉, 문자의 길이를 알아낸다.
SEARCH C_HSL_SUM FOR '-'.
* SY-FDPOS가 '-'의 위치값을 갖고 있다.
I_LENT = SY-FDPOS - 3.
U_LEN = CEIL( I_LENT / 3 ).
D_LEN = I_LENT / 3.
CHK_ZERO = U_LEN - D_LEN.
* COMMA의 갯수를 알아낸다.
I_COMMA = CEIL( I_LENT / 3 ).
IF CHK_ZERO <> 0.
I_COMMA = I_COMMA + 1.
ENDIF.
* H_HSL_SUM필드값 길이를 알아낸다. (20 : H_HSL_SUM필드의 길이,
POS1: H_HSL_SUM필드를 WRITE하는 처음 위치)
I_LEN = ( 20 - I_LENT ) + POS1 - I_COMMA - 1.
WRITE AT I_LEN '▲'.
ELSE.
WRITE AT POS1(LEN1) H_HSL_SUM DECIMALS 0 NO-SIGN.
ENDIF.
댓글 3
-
디카초올~
2011.12.08 21:48
감사합니다. -
배불뚝이용
2013.02.26 22:15
감사합니다.
-
손여사
2014.06.10 00:13
간단한 구문으로도 변경 가능합니다
DATA : LV_SUM TYPE MENGE_D VALUE '123456.00'.
DATA : LV_MEINS TYPE MEINS VALUE 'EA'.
DATA : LV_STRING(50).
* SUM 값에서 (-로 변경)
LV_SUM = - LV_SUM.
* 0보다 작을 경우
IF LV_SUM < 0.
* EA 타입으로 WRITE
WRITE LV_SUM TO LV_STRING UNIT LV_MEINS.
* 공백 제거
CONDENSE LV_STRING NO-GAPS.
WRITE : 'LV_SUM', LV_SUM.
WRITE : / 'LV_STRING', LV_STRING.
* 결과
*LV_SUM 123,456.000-
*LV_STRING 123,456-
* - 구문 포함시
IF LV_STRING CS '-'.
REPLACE '-' WITH '' INTO LV_STRING.
CONCATENATE '▲' LV_STRING INTO LV_STRING.
ENDIF.
ENDIF.
WRITE : / 'LV_STRING', LV_STRING.
* 결과
* LV_STRING ▲123,456