在十六进制里,回车和换行是两个字符 0D00 是回车,0A00是换行,但是在SAP上都显示成#号,如下
前两个是回车,第三个是#
十六进制在数学中是一种逢16进1的进位制,一般用数字0到9和字母A到F(或a-f)表示,其中A-F表示10~15,这些称作十六进制数字,题主所问的代表如下:
1、“0D”是把光标移到同一行的顶头——回车(CR)。
2、“0A”是把光标移到下一行——换行(LF)。
3、16进制代码中“0A”是换行,如果只有“0D”,那么光标会回到这一行的开始处,只有“0A“、”0D”一起用,才能使光标到下一行的开始处。
那我们怎么在程序里替换掉这东西呢
首先,定义三个变量
DATA ls_char TYPE char2. "记录回车、换行符
DATA:p_hc TYPE char1, "回车的16进制
p_hh TYPE char1. "换行的16进制
然后先获取回车和换行符号 : cl_abap_char_utilities=>cr_lf , 再分别把回车和换行分别赋值给回车符号和换行符号
代码如下:
ls_char = cl_abap_char_utilities=>cr_lf. " 获取回车、换行符
p_hc = ls_char+0(1). "回车
p_hh = ls_char+1(1). "换行
然后去替换字符串里的符号
"回车符号处理
REPLACE ALL OCCURRENCES OF p_hc IN t_ftp-txz01 WITH ' '.
"换行符号处理
REPLACE ALL OCCURRENCES OF p_hh IN t_ftp-txz01 WITH ' '.
DEBUG 看一下
这样就一次性获取到两个符号了
完美