SAP中负数的表示增强 负号从数字后更改到数字前面
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
????????CHANGING
??????????VALUE = gt_table-column5.
?
問同事了下,告訴我用write to語句把負數(shù)取絕對值,然后把數(shù)字型寫入字符型可以保留千位符,再判斷正負數(shù),在輸出的時候添上負號。在FORM里我就是這樣改的了,很方便。
?
Form asset_front_minus changing value1.
?? value2 = abs( value1 ).
write value2 to string1.
???condense string1.
???if value1 < 0.
???write: '-', string1 LEFT-JUSTIFIED NO-GAP NO-ZERO.
???else.
???write: string1 LEFT-JUSTIFIED NO-GAP NO-ZERO.
???endif.
endform.
?
他告訴我手動把字符型加千位符的,取整,判斷長度,除3以后循環(huán)mask"___,"格式,分割,再處理頭3位,覺得有點頭暈,麻煩啊。不過真有強人這么做,下面就是了,手動把字符型加千位符號。
?
?
FORM NUMTOSTR USING VALUE(ZNUM) CHANGING VALUE(ZSTR).
DATA : ZCLEN TYPE I,
N TYPE I,
ZCSTR(20) TYPE C,
ZCSTR2(20) TYPE C,
ZCTEMP(3) TYPE C,
ZFLAG(1) TYPE C VALUE '.',
ZFLAG2 TYPE I VALUE 0,
ZCDEC(20) TYPE C. "記錄小數(shù)部分.
ZSTR = ''.
CHECK ZNUM <> 0.
IF ZNUM <= -1000.
ZFLAG2 = 1.
ZNUM = ABS( ZNUM ).
ENDIF.
IF ZNUM >= 1000.
ZCSTR = ZNUM.
* 壓縮字符串,去除前面的空格。
CONDENSE ZCSTR NO-GAPS.
* 分離整數(shù)與小數(shù),好單獨處理整數(shù)。
SPLIT ZCSTR AT ZFLAG INTO ZCSTR ZCDEC.
ZCLEN = STRLEN( ZCSTR ).
* 在循環(huán)中從右面在每三位的前面加上一個逗號。
WHILE ZCLEN > 3.
N = ZCLEN - 3.
ZCTEMP = ZCSTR+N(3).
IF NOT ZCSTR2 IS INITIAL.
CONCATENATE ZCTEMP ZCSTR2 INTO ZCSTR2 SEPARATED BY ','.
ELSE.
ZCSTR2 = ZCTEMP.
ENDIF.
ZCLEN = ZCLEN - 3.
ENDWHILE.
* 將不剩下的不足三位數(shù)加到前面
CONCATENATE ZCSTR+0(ZCLEN) ZCSTR2 INTO ZCSTR2 SEPARATED BY ','.
IF ZFLAG2 = 1.
CONCATENATE '-' ZCSTR2 INTO ZCSTR2.
ENDIF.
CLEAR ZCSTR.
* 將處理過的整數(shù)與小數(shù)連接起來。
CONCATENATE ZCSTR2 ZCDEC INTO ZCSTR SEPARATED BY ZFLAG.
* 將值返回
ZSTR = ZCSTR.
ELSE.
ZSTR = ZNUM.
ENDIF.
ENDFORM.
總結
以上是生活随笔為你收集整理的SAP中负数的表示增强 负号从数字后更改到数字前面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MM模块几个移动类型之间的区别
- 下一篇: 外包物料成本核算时的供应商确定