ABAP 中的换行符以及日期格式的特殊情况
2018-08-07 15:13 覆盆子 阅读(2080) 评论(0) 编辑 收藏 举报1、换行符
当通过EXCEL上传获取数据的时候,常常会无意中带有换行符,换行符在DEBUG的时候我们会看到其会在字符串前后家双引号记忆在字符串后加#,也就是会变成“XXX#”这样,当然你通过CA等方式判断是否包含#这个字符的时候,是会判断失败的,那要怎么判断呢
做如下定义:
DATA: crlf(2) TYPE c.
crlf = cl_abap_char_utilities=>cr_lf.
crlf其实就是换行符,debug可以看到其是两个#,也就是##,然后再通过lv_str ca crlf的方式去判断,就会判断成功
如果需要去除#,则需要如下FORM,当然这个FORM也只能将带#的字符串中的#变成空格,所以如果要变成纯字符串,还需要对其中的空格及双引号进行处理
FORM remove_cr_lf USING p_str.
DATA: tcodepage TYPE cpcodepage.
CALL FUNCTION 'NLS_GET_FRONTEND_CP'
EXPORTING
langu = sy-langu
fetype = 'MS'
IMPORTING
frontend_codepage = tcodepage
EXCEPTIONS
illegal_syst_codepage = 1
no_frontend_cp_found = 2
internal_or_db_error = 3
OTHERS = 4.
CALL FUNCTION 'SCP_REPLACE_STRANGE_CHARS'
EXPORTING
intext = p_str
inter_cp = tcodepage
replacement = 32 " 等于space, ASC
IMPORTING
outtext = p_str
EXCEPTIONS
invalid_codepage = 1
codepage_mismatch = 2
internal_error = 3
cannot_convert = 4
fields_not_type_c = 5
OTHERS = 6.
ENDFORM.
2、日期的特殊情况
当通过EXCEL上传导入日期格式的数据时,系统常常会将数据变成既不是INITIAL又不是’00000000‘,DEBUG看到的却是空值,通过CLEAR处理则会变成’00000000‘
所以这个时候如何判断这个日期字段是否有值呢,就只能用 lv_date = ''来判断了,这个就会判断成功
感觉很神奇