我从excel文件中读取数据。 内部表的所有列都是char128,有2列只包含带小数点的数字。所以我需要检查字段只包含数字或带小数点的数字。如何 ? 谢谢abap程序,如何检查char128字段只包含数字和小数点
功能模块NUMERIC_CHECK,只能检查数字,如果数字有小数点就没用了。
我从excel文件中读取数据。 内部表的所有列都是char128,有2列只包含带小数点的数字。所以我需要检查字段只包含数字或带小数点的数字。如何 ? 谢谢abap程序,如何检查char128字段只包含数字和小数点
功能模块NUMERIC_CHECK,只能检查数字,如果数字有小数点就没用了。
您可以使用CO
(只包含):
IF value CO '1234567890.'.
"OK
ELSE.
"Error"
ENDIF.
也许你还需要在你的IF _ CO
语句来的空间。
此检查不检测多个小数点(例如123.45.67.89
)。
较新版本的ABAP支持正则表达式。
如果你在你的字符串也空格,你可以将它们添加到CO值:: IF value CO '1234567890 .'.
,如果你想查询字符串是否是一个有效的小数,你可以使用下面的模块功能: 'HRCM_STRING_TO_AMOUNT_CONVERT',它允许您将字符串转换为数字对应字符串,给定字符串,小数点分隔符和千位分隔符。
关于
非常感谢,功能很好 – YuTian 2012-05-08 03:37:23
您可能会尝试使用REGEX。报告DEMO_REGEX_TOY允许您输入字符串并根据它们测试正则表达式。
更有经验的人与一般的正则表达式也许能够使这一点更灵活,但这里是我想出了:
-?[0-9]+(\.[0-9]*)?
- ?任选地匹配 ' - ' 字符(允许底片或非底片
[0-9] +匹配位数(在+使得1个或多个匹配)
\任选。?匹配的“”字符(\需要为“”是操作者)
([0-9] +)?任选十进制
的另一种方法来检查后的任何数字匹配号码:
data: float_value type f.
try.
float_value = <your string value here>.
catch cx_sy_conversion_no_number.
" not a valid number
endtry.
是的,我现在在我的代码中使用它。 – YuTian 2012-05-08 03:37:47
数字可以是负数吗? – tomdemuyt 2012-04-24 11:48:04
是的,其实它可能是任何东西,我只是想检查它,如果它可以转换为数字,我必须显示错误消息给用户 – YuTian 2012-05-08 05:53:14