SAP 字符里回车和换行符处理(标准类方法 cl_abap_char_utilities=>cr_lf)

在十六进制里,回车和换行是两个字符 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 看一下
在这里插入图片描述
这样就一次性获取到两个符号了
完美

SAP ABAP环境中,如果需要调用HTTP接口并且Params参数中包含换行符(通常表示成'\n'),你需要将其转义为URL编码格式,以便正确传递给API。可以使用`DATA: lt_url_parameters TYPE TABLE OF strings`这样的数据结构来存储参数,并在添加参数值时进行转换。 这是一个简单的示例代码片段: ```abap DATA: lv_http_method = 'POST', "请求方法 lv_url = 'https://example.com/api', "接口地址 lv_parameter_name = 'params', "参数名 lv_value_with_newline = 'value1\nvalue2', "带换行的值 " 创建参数表 DATA: lt_url_parameters type table of strings with default value. " 转换换行符为URL编码 lt_url_parameters(1) = lv_parameter_name & '=' & quotename(lv_value_with_newline, ''). " 使用quotename函数将换行符编码为%0A " 构造完整的URL参数字符串 DATA: lv_encoded_params = '/'. LOOP AT lt_url_parameters INTO DATA(ls_param). lv_encoded_params = lv_encoded_params || ls_param & '&'. ENDLOOP. IF sy-index > 1. " 如果还有其他参数,去掉最后一个 & DELETE ls_param FROM lt_url_parameters. " 因为最后添加了'&' ENDIF. " 完整的HTTP请求 DATA: lv_full_url = lv_url & '?' & lv_encoded_params. " 或者你可以直接在请求构造中拼接,如: DATA: lv_request = lv_http_method & ' ' & lv_full_url. " 现在你可以使用send_http_message或类似函数发送请求 CALL FUNCTION 'SEND_HTTP_MESSAGE' EXPORTING i_http_method = lv_http_method i_url = lv_full_url i_content = '...' IMPORTING et_response_header = VALUE #( ... ) et_data = VALUE #( ... ). ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值