去除SAP中的一些特殊字符
来源:互联网 发布:java线程共享数据 编辑:程序博客网 时间:2024/04/28 14:51
① 换行符,TAB KEY等的表示
在数据文件输出的时候,有时候需要使各个字段间用TAB KEY进行分割。
那么,TAB KEY在ABAP中是如何表示的,就是写入一个TAB KEY吗?
事实上,在类对象CL_ABAP_CHAR_UTILITIES中已经事先定义好了如换行符,TAB KEY等。
CR_LF 换行符
HORIZONTAL_TAB 水平方向的TAB KEY
VERTICAL_TAB 竖直方向的TAB KEY
FORM_FEED 改页
例: CONCATENATE COL1 COL2 CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB INTO …
② 换行符,TAB KEY等在DB中保存
换行符,TAB KEY等在SAP的DB中被存为“#“。
虽然被保存为#,但在报表中仍能正常显示。
如果是Excle中有换行, 则被存储为双引号.
换行符,TAB KEY等的置换处理
换行符,TAB KEY等的置换不能简单的用REPLACE命令进行处理。
正确的处理如下:
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.