ABAP中,有时候需要判断一个字符串是否为数字,下面是常用的几种方法及注意事项:
1、可以利用NUMERIC_CHECK判断字串是否为数字并输出补零;
注意:利用function module NUMERIC_CHECK 检查字符串是否为数字时,整数类型的是NUMC,小数类型则会被认为Char类型!
DATA:lv_char1 TYPE c length 3 VALUE '100',
lv_char2 TYPE n LENGTH 6,
lv_type TYPE dd01v-datatype.
CALL FUNCTION ‘NUMERIC_CHECK’
EXPORTING
string_in = lv_char1
IMPORTING
string_out = lv_char2
htype = lv_type.
WRITE:lv_char1,lv_char2,lv_type.
结果:100 000100 NUMC
————
注意:
1、小数类型数字检查结果是CHAR类型的。
如下所示:
DATA:lv_char1 TYPE c length 3 VALUE '0.100',
lv_char2 TYPE n LENGTH 6,
lv_type TYPE dd01v-datatype.
CALL FUNCTION ‘NUMERIC_CHECK’
EXPORTING
string_in = lv_char1
IMPORTING
string_out = lv_char2
htype = lv_type.
WRITE:lv_char1,lv_char2,lv_type.
结果:0.1 0.100 char
————
2、可以用正则表达式判断,也只能判断整数,如果MATCH = 'X',则为数字,如果为空,则不是数字类型,如下代码:
DATA:MATCHER TYPE REF TO CL_ABAP_MATCHER.
DATA:MATCH TYPE C LENGTH 1.
DATA:STR(10) TYPE C.STR = '2323'.
MATCHER = CL_ABAP_MATCHER=>CREATE( PATTERN = '\d+' TEXT = STR ).
MATCH = MATCHER->MATCH( ).
3、也可以用另一种方法来判断是否为补获系统异常:把字符串赋值给I类型的变量;如果是字母,会触发一个异常;可据异常情况,断定是数字还是字母!