0
点赞
收藏
分享

微信扫一扫

format Excel上传中的数字(金额)格式_SAP刘梦_新浪博客

有时候使用Excel批导。

用户维护Excel的数字格式的时候,有时候是手动输入,有的是从别的系统导出来的。

数字格式可能有:

123,456.00

123.456,00

123456.00

123456,00

甚至奇葩点儿:123,456(没有小数点及小数位)


而咱们系统里赋值的时候,前台输入跟你su3设置有关。

但是debug的时候,你回发现,在运行时小数点就是(.)点儿。


所以为了规范格式,自己写了段代码,将输入的数字转换为 1234.00  这种格式


效果

​​

format <wbr>Excel上传中的数字(金额)格式

​​​


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 .


​​

format <wbr>Excel上传中的数字(金额)格式

​​​


当然,我这里是只针对只有两位小数位的,比如金额,对于三位小数位的,自己改下就行了

 可能是有标准函数或者其他方法能做这个,我懒得找了,索性自己随手写了这么一个,可能有bug,遇到了再说吧

欢迎关注订阅号:SAP学习记录 (SAPlearning )

​​

PO <wbr><wbr>text <wbr><wbr>copy <wbr><wbr>rules <wbr><wbr>:copy <wbr><wbr>PR <wbr><wbr>item <wbr><wbr>text <wbr><wbr>to <wbr><wbr>PO

​​

举报

相关推荐

0 条评论