【READ_TEXT】读取出来的长文本带特殊字符<(>&<)>

  • CONVERT_STREAM_TO_ITF_TEXT:将特殊字符加上转义标识,如:AAA&111 转换为 AAA<(>&<)>111
  • CONVERT_ITF_TO_STREAM_TEXT:还原含有转义标识特殊字符,如:AAA<(>&<)>111还原为AAA&111

在SAP中使用Read_text()读取长文本时,我们偶尔会看到 一个 <(>&<)> 符号,其实这是SAP 自动转换后的’&’ 符号

同样还有一些特殊符号会出现这种问题,而 CONVERT_ITF_TO_STREAM_TEXT 就是用来解决这个问题的。

 

  DATAlv_id       TYPE thead-tdid,

        lv_language TYPE thead-tdspras,

        lv_name     TYPE thead-tdname,

        lv_object   TYPE thead-tdobject.

  DATAlv_str   TYPE string"项目文本

        lt_lines TYPE TABLE OF tline.

  TYPES l_stream(72TYPE c.

  DATA lt_stream TYPE STANDARD TABLE OF l_stream.


    lv_name      ls_resb-ebeln && ls_resb-ebelp.

    lv_id        'F12'.

    lv_language  '1'.

    lv_object    'EKPO'.

    CALL FUNCTION 'READ_TEXT'

      EXPORTING

        id                      lv_id

        language                lv_language

        name                    lv_name

        object                  lv_object

      TABLES

        lines                   lt_lines

      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.

* convert the text lines

      IF lt_lines[ ]-tdline CP '*<(>&<)>*'." 20240806 add 前台创建的长文本带有特殊字符转义,需要还原;后台创建的长文本不需要转义

        CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT'              "352736

          EXPORTING

            language    lv_language

          TABLES

            itf_text    lt_lines

            text_stream lt_stream.

        LOOP AT lt_stream INTO DATA(ls_stream).

          lv_str &&= ls_stream.

        ENDLOOP.

      ELSE.

        LOOP AT lt_lines INTO DATA(ls_tline).

          lv_str &&= ls_tline-tdline.

        ENDLOOP.

      ENDIF.

    ENDIF.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值