SAP ABAP &字符自动转换问题

58 篇文章 3 订阅
文章描述了在使用Read_text函数读取长文本时,遇到SAP系统将&符号转换为<(>&<)>的问题。提供了解决方案,即通过调用CONVERT_ITF_TO_STREAM_TEXT函数将这些特殊符号转回原始的&。
摘要由CSDN通过智能技术生成

&字符自动转换问题

一、问题描述
  1. 用函数Read_text()读取长文时,出现了<(>&<)>符号,其实这是SAP系统自动转换后的’&'符号,其他还有一些特殊符号也有同样的问题。

  2. ead_text()长文本后,发现’&'转换成<(>&<)>符号,

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-owIE9JDg-1678545594818)(D:\学习计划笔记\问题解决办法\IMAGE\image-20220512145059679.png)]

二、解决办法
  1. 这个<(>&<)>符号可以通过CONVERT_ITF_TO_STREAM_TEXT转回‘&’

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tSx6ToLR-1678545594819)(D:\学习计划笔记\问题解决办法\IMAGE\image-20220512145318104.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S56pgc4j-1678545594819)(D:\学习计划笔记\问题解决办法\IMAGE\image-20220512145334907.png)]

  2. 执行结果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-on9GEjx1-1678545594819)(D:\学习计划笔记\问题解决办法\IMAGE\image-20220512145401326.png)]

三、代码如下
FORM READ_TEXT  USING    PI_THEAD TYPE THEAD
                CHANGING PC_OUTPUT.
  TYPES:  BEGIN OF STREAM,
          DEFAULT TYPE CHAR100,
    END OF STREAM.
    
  DATA: LT_TLINE  TYPE TABLE OF TLINE,
        LT_STREAM TYPE TABLE OF STREAM,  
        LW_STREAM TYPE STREAM,  
        LT_TEXT   TYPE TABLE OF TLINE,  
        LW_TEXT   TYPE TLINE,  
        LW_TLINE  TYPE TLINE.
*->Read text
  CLEAR LT_TLINE.
  CALL FUNCTION 'READ_TEXT'
    EXPORTING
      ID                      = PI_THEAD-TDID
      LANGUAGE                = PI_THEAD-TDSPRAS
      NAME                    = PI_THEAD-TDNAME
      OBJECT                  = PI_THEAD-TDOBJECT
    TABLES
      LINES                   = LT_TLINE
    EXCEPTIONS
      ID                      = 1
      LANGUAGE                = 2
      NAME                    = 3
      NOT_FOUND               = 4
      OBJECT                  = 5
      REFERENCE_CHECK         = 6
      WRONG_ACCESS_TO_ARCHIVE = 7
      OTHERS                  = 8.
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ELSE.
    LOOP AT LT_TLINE INTO LW_TLINE.
 "将读出的文本中的<(>&<)> 符号转换成& START
      LW_TEXT-TDLINE = LW_TLINE-TDLINE.
      APPEND LW_TEXT TO LT_TEXT.
    ENDLOOP.
     CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT'
      EXPORTING
       LANGUAGE            = PI_THEAD-TDSPRAS
      TABLES
        ITF_TEXT           = LT_TEXT
        TEXT_STREAM        = LT_STREAM.

      LOOP AT LT_STREAM INTO LW_STREAM.
      IF PC_OUTPUT IS INITIAL.
        PC_OUTPUT = LW_STREAM-DEFAULT.  
      ELSE.
        PC_OUTPUT = PC_OUTPUT && CL_ABAP_CHAR_UTILITIES=>NEWLINE && LW_STREAM-DEFAULT . 
      ENDIF.
      CLEAR:LW_TLINE ,LW_STREAM. 
    ENDLOOP.
  ENDIF.
ENDFORM.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值