有时候使用Excel批导。
可能是有标准函数或者其他方法能做这个,我懒得找了,索性自己随手写了这么一个,可能有bug,遇到了再说吧
用户维护Excel的数字格式的时候,有时候是手动输入,有的是从别的系统导出来的。
数字格式可能有:
123,456.00
123.456,00
123456.00
123456,00
甚至奇葩点儿:123,456(没有小数点及小数位)
而咱们系统里赋值的时候,前台输入跟你su3设置有关。
但是debug的时候,你回发现,在运行时小数点就是(.)点儿。
所以为了规范格式,自己写了段代码,将输入的数字转换为 1234.00
这种格式
效果
FUNCTION ZLM_FORMAT_DECIMAL
.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" CHANGING
*" REFERENCE(CV_VALUE)
*"----------------------------------------------------------------------
DATA
:LV_LEN
TYPE INT4
.
DATA
:LV_TMP
TYPE INT4
.
DATA
:LV_DEC
TYPE CHAR1
.
LV_LEN
=
STRLEN
( CV_VALUE
)
.
IF LV_LEN
>
7
.
"1,100.00
LV_TMP
= LV_LEN
-
7
.
IF CV_VALUE LV_TMP
(
1
)
CO
',.'
.
LV_DEC
= CV_VALUE LV_TMP
(
1
)
.
REPLACE
ALL
OCCURRENCES
OF LV_DEC
IN CV_VALUE
WITH
''
.
CONDENSE CV_VALUE
NO
-GAPS
.
ENDIF
.
ENDIF
.
LV_LEN
=
STRLEN
( CV_VALUE
)
.
IF LV_LEN
>
4
.
"1,100
LV_TMP
= LV_LEN
-
4
.
IF CV_VALUE LV_TMP
(
1
)
CO
',.'
.
LV_DEC
= CV_VALUE LV_TMP
(
1
)
.
REPLACE
ALL
OCCURRENCES
OF LV_DEC
IN CV_VALUE
WITH
''
.
CONDENSE CV_VALUE
NO
-GAPS
.
ENDIF
.
ENDIF
.
LV_LEN
=
STRLEN
( CV_VALUE
)
.
IF LV_LEN
>
3
.
"100.00
LV_TMP
= LV_LEN
-
3
.
LV_DEC
= CV_VALUE LV_TMP
(
1
)
.
IF LV_DEC
CO
',.'
.
REPLACE
ALL
OCCURRENCES
OF LV_DEC
IN CV_VALUE
WITH
'.'
.
ENDIF
.
ENDIF
.
ENDFUNCTION .
*"----------------------------------------------------------------------
*"*"Local
*"
*"
*"----------------------------------------------------------------------
ENDFUNCTION .
当然,我这里是只针对只有两位小数位的,比如金额,对于三位小数位的,自己改下就行了