前言
简单的如只包含数字或字母等,可以使用表达式CA或CO实现;
正则表达式匹配可以用关键字find,match或count实现。
列表
目前只有一个
功能 | 表达式 | 备注 |
---|---|---|
非法字符 | [^[:print:]] |
SAP系统不支持的字符 |
中文 | [u4E00-u9FA5] |
中文汉字和符号 |
示例代码
constants:
" lc_chinese_regex type string value '[^u4E00-u9FA5]+$', "匹配汉字及符号
lc_em_char type string value '()、。、,、’', "全角正则表达式
lc_lower_case type string value 'qwertyuiopasdfghjklzxcvbnm' ##NO_TEXT,
lc_common_regex type string value '[0-9A-Z、-]'
" lc_em_regex type string value '[()、。、,、’]'
. "全角符号
"汉字和半角前台显示两个字符,字母和半角显示为1个字符
"汉字只能和全角字符组合,英文只能和半角字符组合
"因此,通过计算字符长度和显示长度的余数,即可判断是否合法
data(lv_name_display_length) = cl_abap_list_utilities=>dynamic_output_length( <fs_bp_basic>-zzbpnm ).
data(lv_name_char_strlen) = strlen( <fs_bp_basic>-zzbpnm ).
"计算通用字符长度(在中英文名称中均可能出现)
data(lv_common_length) = count( val = <fs_bp_basic>-zzbpnm regex = lc_common_regex ).
"减去通用字段长度后,计算余数
data(lv_div) = ( lv_name_display_length - lv_common_length ) mod ( lv_name_char_strlen - lv_common_length ).
if lv_div ne 0.
message e041 into data(lv_zmdg_041).
lv_error_message = lv_error_message && '/' && lv_zmdg_041.
endif.