SAP中負數的表示增強 負號從數字後更改到數字前面

2021-07-02 22:05:15 字數 2126 閱讀 4490

sap

中的負號是放後面的,其實也無所謂,誰看不出來啊,關鍵人家要你改也沒有辦法。有個函式cloi_put_sign_in_front是把負號提前的,但是它是把字元轉化為字元型輸出的。就是把負號split下然後放前面,這樣的問題就是在顯示的時候字元型數字沒有3位一分的千位分隔符。再把字元型賦予數字型輸出,但是輸出的時候負號還是會自動加後面滴~

call function 'cloi_put_sign_in_front'

changing

value = gt_table-column5.

問同事了下,告訴我用write to語句把負數取絕對值,然後把數字型寫入字元型可以保留千位符,再判斷正負數,在輸出的時候添上負號。在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以後迴圈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. "記錄小數部分.

zstr = ''.

check znum <> 0.

if znum <= -1000.

zflag2 = 1.

znum = abs( znum ).

endif.

if znum >= 1000.

zcstr = znum.

* 壓縮字串,去除前面的空格。

condense zcstr no-gaps.

* 分離整數與小數,好單獨處理整數。

split zcstr at zflag into zcstr zcdec.

zclen = strlen( zcstr ).

* 在迴圈中從右面在每三位的前面加上乙個逗號。

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.

* 將不剩下的不足三位數加到前面

concatenate zcstr+0(zclen) zcstr2 into zcstr2 separated by ','.

if zflag2 = 1.

concatenate '-' zcstr2 into zcstr2.

endif.

clear zcstr.

* 將處理過的整數與小數連線起來。

concatenate zcstr2 zcdec into zcstr separated by zflag.

* 將值返回

zstr = zcstr.

else.

zstr = znum.

endif.

endform.

SAP中的幾個增強

這幾個只是我這個專案用到的幾個增強,分享一下 形式發票需要傳給別的系統,增強 cmod sdvfx009 描述 開票憑證處理kidono 付款參照號 exit saplv60a 001,include zxvvfu09。研發內部訂單對應研發產品唯一性檢查,增強 cmod coopa 01 描述 內部...

負數在計算機中的表示

今天,老大讓我調查乙個浮點數轉換為整數的問題。自己就查了些資料,順便複習一下原碼 反碼和補碼。原碼 將乙個整數,轉換成二進位制,就是其原碼。如單位元組的5的原碼為 0000 0101 5的原碼為1000 0101。反碼 正數的反碼就是其原碼 負數的反碼是將原碼中,除符號位以外,每一位取反。如單位元組...

負數在計算機中的表示

原碼 將乙個整數,轉換成二進位制,就是其原碼。如單位元組的5的原碼為 0000 0101 5的原碼為1000 0101。反碼 正數的反碼就是其原碼 負數的反碼是將原碼中,除符號位以外,每一位取反。如單位元組的5的反碼為 0000 0101 5的原碼為1111 1010。補碼 正數的補碼就是其原碼 負...