메뉴 건너뛰기

SAP 한국 커뮤니티

▲123,456' 으로 표시하게 한다

꿀단지 2011.10.11 11:17 조회 수 : 5691

* 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.