博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
替换空字符NULL(字符编码为0的字符)
阅读量:7157 次
发布时间:2019-06-29

本文共 1991 字,大约阅读时间需要 6 分钟。

老R3(非Unicode系统),发现读取出来的数据中有编码为0的字符,存文件后发现串行,所以需要先替换
DATA: str TYPE string.
*str = zacct_12-txt+47.
str = '南京人力资源部'.
"C4CFBEA9C8CBC1A6D7CAD4B4B2BF
DATA:c(17).
FIELD-SYMBOLS: <c> TYPE x .
ASSIGN c TO <c> CASTING.
<c> = '00C4CFBEA9C8CB00C1A6D7CAD4B4B2BF00'."在 
南京人力资源部 前中后加上了空字符00,方便测试
WRITE:/ c,<c>.
str = c.
PERFORM replace_null USING str.
*&---------------------------------------------------------------------*
*&      Form  replace_null
*&---------------------------------------------------------------------*
*       text R3系统中替换字符串中的空字符(编码为0的)
*----------------------------------------------------------------------*
*      -->P_STR      text
*----------------------------------------------------------------------*
FORM replace_null USING p_str TYPE string.
******************************编
  DATA: xstr TYPE xstring.
  DATA: l_codepage(4) TYPE n .
  DATA: l_encoding(20).
  CALL FUNCTION 'SCP_CODEPAGE_BY_EXTERNAL_NAME'
    EXPORTING
      external_name = 'UTF-16BE'"不管中文还是英文,先统一编码,都转成两字节的
    IMPORTING
      sap_codepage  = l_codepage.
  l_encoding = l_codepage.
  DATA: convout TYPE REF TO cl_abap_conv_out_ce.
  convout = cl_abap_conv_out_ce=>create( encoding = l_encoding ).
  convout->write( data = p_str ).
  xstr =  convout->get_buffer( ).
******************************替
  DATA:truc_str TYPE string,
       str_len TYPE i.
  truc_str = xstr.
  str_len = STRLEN( truc_str ).
  str_len = str_len / 4 .
  DATA: cnt TYPE i.
  DATA: c4(4) .
  DATA: x2(2) TYPE x.
  DATA: i TYPE i.
  DATA: xstr2 TYPE xstring.
  DATA: off_index TYPE i.
  DO str_len TIMES.
    off_index = cnt * 4.
    c4 = truc_str+off_index(4).
    x2 = c4.
    i = x2.
    IF i = 0."如果发现是空字符,使用空格替换
      x2 = '0020'.
      CONCATENATE xstr2 x2 INTO xstr2 IN BYTE MODE.
    ELSE.
      CONCATENATE xstr2 x2 INTO xstr2 IN BYTE MODE.
    ENDIF.
    WRITE: / c4,x2,i,xstr2.
    cnt = cnt + 1.
  ENDDO.
******************************解
  DATA: convin TYPE REF TO cl_abap_conv_in_ce.
  convin = cl_abap_conv_in_ce=>create( encoding = l_encoding input = xstr2 ).
  DATA: str TYPE string.
  CALL METHOD convin->read
    IMPORTING
      data = p_str.
  WRITE: / p_str.
ENDFORM.                    "replace_null

转载地址:http://rpegl.baihongyu.com/

你可能感兴趣的文章
JDK8漫谈——代码更优雅
查看>>
记录Vue打包发布Nginx服务器
查看>>
cookie 你咋还没整明白?
查看>>
如何设计并实现一个db连接池?
查看>>
考虑android library+flutter module怎么生成aar
查看>>
Hadoop初识之Hadoop单机版安装
查看>>
phalcon 2.0.0的安装
查看>>
解决git extensions 连接git.oschina.net ssh不信任新的IP地址问题
查看>>
win7运行太慢?win7太卡?换wes7吧,体验飞一般的运行效率
查看>>
登陆超时
查看>>
关于VLAN access-map 和Vlan filter
查看>>
WordPress IP验证不当的解决办法及感慨
查看>>
三个引用传递
查看>>
hive的函数UDF
查看>>
Oracle9i RMAN 备份及恢复步骤
查看>>
我的友情链接
查看>>
【storm集群】storm 工作目录不停生成hs_err_pidXXX.log
查看>>
MySQL主从复制的原理及实现过程(mysql-5.5的同步、半步复制过程)
查看>>
C/C++中堆和栈的区别--李家凯老师
查看>>
PopupWindow的使用
查看>>