Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Abap 检查字符字段是否仅包含数字_Abap - Fatal编程技术网

Abap 检查字符字段是否仅包含数字

Abap 检查字符字段是否仅包含数字,abap,Abap,我从excel文件中读取数据。 内部表的列均为char128,有2列只包含小数点的数字。所以我需要检查字段是否只包含数字或带小数点的数字 功能模块数字检查,只能检查数字,如果带有小数点的数字将无效。您可以使用CO(仅包含): 也许您还需要在IF\CO-语句中留一个空格 此检查未检测到多个小数点(例如,123.45.67.89) 较新版本的ABAP支持正则表达式 如果字符串中还有空格,可以将其添加到CO值中:如果值CO'1234567890'。如果要检查字符串是否为有效的十进制数,可以使用以下模块

我从excel文件中读取数据。 内部表的列均为char128,有2列只包含小数点的数字。所以我需要检查字段是否只包含数字或带小数点的数字


功能模块数字检查,只能检查数字,如果带有小数点的数字将无效。

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

也许您还需要在
IF\CO
-语句中留一个空格

此检查未检测到多个小数点(例如,
123.45.67.89

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


如果字符串中还有空格,可以将其添加到CO值中:
如果值CO'1234567890'。

如果要检查字符串是否为有效的十进制数,可以使用以下模块函数:“HRCM\u string\u to\u AMOUNT\u CONVERT”,该函数允许您在给定字符串的情况下将字符串转换为数字对应项,小数点分隔符和千位分隔符


关于

您可以尝试使用正则表达式。报告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.
数据:浮点值类型f。
尝试
浮点值=。
捕获cx\u sy\u转换号。
“不是一个有效的数字
结束。

这不是最好的,我已经试过了,如果值中有空格,它会是最好的useless@YuTian您可以在比较中添加空格。我修改了我的答案,这种技术实际上是无用的,因为它也会让像“。“通过。是的,实际上它可以是任何东西,我只是想检查一下,如果它可以转换成数字,我必须向用户显示一条错误消息,而不是使用
(?:)
而不是
)进行非子匹配分组。这将在
-.5
,精炼正则表达式:
-?(?:[0-9]+\.[0-9]*\.[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.