5

我从 excel 文件中读取数据。内表的cols都是char128,有2个cols只包含带小数点的数字。所以我需要检查仅包含数字或带小数点的数字的字段。

NUMERIC_CHECK功能模块,只能检查数字,如果数字带小数点就没有用了。

4

4 回答 4

6

您可以使用CO(仅包含):

IF value CO '1234567890.'.
  "OK
ELSE.
  "Error"
ENDIF.

也许您的IF _ CO-statement 中还需要一个空格。

此检查不检测多个小数点(例如123.45.67.89)。

较新版本的 ABAP 支持正则表达式。

如果您的字符串中还有空格,您可以将它们添加到 CO-value::IF value CO '1234567890 .'.

于 2012-04-24T08:59:07.710 回答
5

您可以尝试使用正则表达式。报告 DEMO_REGEX_TOY 允许您输入字符串并针对它们测试正则表达式。

一般来说,对 REGEX 更有经验的人可能会使其更加通用,但这是我想出的:

-?[0-9]+(\.[0-9]*)?

-?可选地匹配“-”字符(允许否定或非否定

[0-9]+匹配数字(+ 使其匹配 1 或更多)

\.? 可选地匹配 '.' 字符(需要 \ ,因为 '.' 是运算符)

([0-9]+)? 可选匹配小数点后的任何数字

于 2012-04-24T14:17:05.947 回答
0

如果要检查字符串是否为有效的小数,可以使用以下模块函数:'HRCM_STRING_TO_AMOUNT_CONVERT',它允许您将字符串转换为对应的数字,给定字符串、小数分隔符和千位分隔符。

问候

于 2012-04-24T09:30:47.193 回答
-1

另一种检查号码的方法:

data: float_value type f.
try.
  float_value = <your string value here>.
catch cx_sy_conversion_no_number.
  " not a valid number
endtry.
于 2012-05-06T06:26:49.017 回答