안녕하십니까.
이번주가 가장 추운 한 주가 될꺼라는데 다들 건강 관리는 잘 하시는지요?
오랫만에 글을 남기네요... 찾다찾다 안되서 글을 올립니다.
예전 글 찾아보니
DATA GV_VALUE(5).
GV_VALUE = '1234-'.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = GV_VALUE.
WRITE: GV_VALUE “ ‘-1234’
이렇게 사용하는 방법은 있다고 하는데... 테스트 해보니 숫자로 들어가는 건 아닌 것 같더군요.
숫자로 주고 받으려니 자꾸 에러가 나더라구요. ^^
금액든 수량이든 콤마(,)도 찍어야 하고, 합계도 구해야 하고, 강제로 다 해주려니...
루프(loop)도 그만 돌리고 싶구요.
현업에서 이런 요청하는 곳 있을 것 같은데 어떻게 해결하셨는지 조언 좀 부탁드려요.
댓글 3
-
sora
2009.12.17 19:18
-
요요
2009.12.17 20:01
대부분 숫자와 관계된 것은 통화이거나 수량일것 같네요.
두 가지 모두 참조필드가 있기 때문에 참조필드만 알고 계시다면
출력시 참조필드를 참조하여 출력만 하시면 되지 않을까 싶어요.
출력시 부호 위치만 조정하시면 될 것 같구요.
DATA : BEGIN OF tab OCCURS 0,
customer TYPE kunnr,
amount TYPE p DECIMALS 2,
waers TYPE waers VALUE 'KRW',
END OF tab .
tab-customer = 'CHOIJINSIL' .
tab-amount = 2350 .
APPEND tab.
tab-customer = 'JANGDONGIL' .
tab-amount = -4320 .
APPEND tab.
LOOP AT tab.
PERFORM write USING 2
tab-customer tab-amount tab-waers.
AT LAST.
SUM.
PERFORM write USING 3 '합계' tab-amount tab-waers.
ENDAT.
ENDLOOP.
*&---------------------------------------------------------------------*
*& Form WRITE
*&---------------------------------------------------------------------*
FORM write USING col_nn TYPE any
text TYPE any
amount TYPE any
waers TYPE any.
DATA l_amount TYPE char30.
FIELD-SYMBOLS <fs_col> TYPE ANY.
CASE col_nn.
WHEN 0. FORMAT COLOR COL_BACKGROUND.
WHEN 1. FORMAT COLOR COL_HEADING.
WHEN 2. FORMAT COLOR COL_NORMAL.
WHEN 3. FORMAT COLOR COL_TOTAL.
WHEN 4. FORMAT COLOR COL_KEY.
WHEN 5. FORMAT COLOR COL_POSITIVE.
WHEN 6. FORMAT COLOR COL_NEGATIVE.
WHEN 7. FORMAT COLOR COL_GROUP.
ENDCASE.
IF amount < 0.
WRITE : /(20) text, amount CURRENCY waers TO l_amount.
SHIFT l_amount RIGHT CIRCULAR.
CONDENSE l_amount .
WRITE : (19) l_amount RIGHT-JUSTIFIED NO-GAP, SPACE.
ELSE.
WRITE : /(20) text, (20) amount CURRENCY waers.
ENDIF.
FORMAT RESET.
ENDFORM. " WRITE
-
행복을 파는 외계인
2009.12.17 22:53
sora님 요요님 급관심 고마웠습니다. ^^
아래와 같이 해결했습니다.
합계는 어쩔 수 없이 계산을 미리 해서 라인 추가해서 넣었구요.
금액의 소수점은 곱하기 100해서 소수점 없는 필드로 넣어서 없앴어요.
좀 무식하게 했더니 길어졌네요.
DATA : BEGIN OF IT_DIFF OCCURS 0,
ACOST TYPE P DECIMALS 3, "단가
ERFMG LIKE MSEG-ERFMG, "Quantity
QCOST TYPE Z10COT001-REMAIN_AMT, "재고금액
ERFMG_P TYPE P DECIMALS 0,
QCOST_P TYPE P DECIMALS 0, "재고금액_소수점없음
ERFMG_M(20) TYPE C, "Quantity
QCOST_M(20) TYPE C, "재고금액
DQUAN LIKE Z10MMT002-DQUAN, "재고차이
DCOST TYPE Z10COT001-REMAIN_AMT, "재고차이금액
DQUAN_P TYPE P DECIMALS 0,
DCOST_P TYPE P DECIMALS 0, "재고차이금액_소수점없음
DRATE TYPE P DECIMALS 2, "재고실사차이율
DQUAN_M(20) TYPE C, "재고차이
DCOST_M(20) TYPE C, "재고차이금액
DRATE_M(20) TYPE C, "재고실사차이율
END OF IT_DIFF.
* 중간 생략... 총합계까지 다 한 후에...
* 음수부호 앞으로 꺼내기.
LOOP AT IT_DIFF.
IT_DIFF-ERFMG_P = IT_DIFF-ERFMG.
WRITE IT_DIFF-ERFMG_P TO CH_DATA.
PERFORM SIGN_IN_FRONT USING CH_DATA.
IT_DIFF-ERFMG_M = CH_DATA.
IT_DIFF-QCOST_P = IT_DIFF-QCOST * 100.
WRITE IT_DIFF-QCOST_P TO CH_DATA.
PERFORM SIGN_IN_FRONT USING CH_DATA.
IT_DIFF-QCOST_M = CH_DATA.
IT_DIFF-DQUAN_P = IT_DIFF-DQUAN.
WRITE IT_DIFF-DQUAN_P TO CH_DATA.
PERFORM SIGN_IN_FRONT USING CH_DATA.
IT_DIFF-DQUAN_M = CH_DATA.
IT_DIFF-DCOST_P = IT_DIFF-DCOST * 100.
WRITE IT_DIFF-DCOST_P TO CH_DATA.
PERFORM SIGN_IN_FRONT USING CH_DATA.
IT_DIFF-DCOST_M = CH_DATA.
WRITE IT_DIFF-DRATE TO CH_DATA.
PERFORM SIGN_IN_FRONT USING CH_DATA.
IT_DIFF-DRATE_M = CH_DATA.
MODIFY IT_DIFF.
ENDLOOP.
FORM SIGN_IN_FRONT USING CH_DATA.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = CH_DATA.
ENDFORM.
DATA: gv_value(15) TYPE c,
gv TYPE p.
gv = 0 - 12345.
WRITE gv TO gv_value.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
value = gv_value.
WRITE: gv_value.
요구하시는 답이 맞는지 모르겠지만 ....
참고 하세요..^^