二维码

ABAP长文本读取&变成特殊字符<(>&<)>

Twilight发表于 2019-12-16 09:03zlzt 最后回复于 2019-12-18 10:13 [复制链接] 4682 1

使用READ_TEXT读取长文本时,发现字符串中&变成了<(>&<)>,使用函数CONVERT_ITF_TO_STREAM_TEXT可处理。

1、CONVERT_ITF_TO_STREAM_TEXT测试
read_text_1.jpg
read_text_2.jpg

2、程序代码
  1.     gv_name = lwa_ALV-vbeln.
  2.     PERFORM frm_read_text USING 'Z002' gv_name 'VBBK'
  3.                               CHANGING lv_attn2.
复制代码

注意:name不可直接赋值,否则报类型不一致错误
  1. FORM frm_read_text USING pi_id TYPE thead-tdid
  2.                          pi_name TYPE thead-tdname
  3.                          pi_object TYPE thead-tdobject
  4.                     CHANGING pc_text.

  5.   DATA:lt_tline TYPE TABLE OF tline WITH HEADER LINE.
  6.   DATA:lt_text_stream TYPE TABLE OF tdline.

  7.   CLEAR:pc_text.
  8.   CALL FUNCTION 'READ_TEXT'
  9.     EXPORTING
  10.       client                  = sy-mandt
  11.       id                      = pi_id
  12.       language                = sy-langu
  13.       name                    = pi_name
  14.       object                  = pi_object
  15.     TABLES
  16.       lines                   = lt_tline
  17.     EXCEPTIONS
  18.       id                      = 1
  19.       language                = 2
  20.       name                    = 3
  21.       not_found               = 4
  22.       object                  = 5
  23.       reference_check         = 6
  24.       wrong_access_to_archive = 7
  25.       OTHERS                  = 8.
  26.   IF sy-subrc = 0.
  27.     DELETE lt_tline WHERE tdline IS INITIAL.  "add by Twilight at 删除空行

  28.     CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT'
  29.       EXPORTING
  30.         language    = sy-langu
  31.       TABLES
  32.         itf_text    = lt_tline
  33.         text_stream = lt_text_stream.

  34.     LOOP AT lt_text_stream ASSIGNING FIELD-SYMBOL(<fs_text_stream>) .
  35.       REPLACE cl_abap_char_utilities=>CR_LF INTO <fs_text_stream> WITH ``.  "删除回车换行
  36.       IF pc_text IS INITIAL.
  37.         pc_text = <fs_text_stream>.
  38.       ELSE.
  39.         pc_text = pc_text && <fs_text_stream>.
  40.       ENDIF.
  41.     ENDLOOP.
  42.   ENDIF.

  43. ENDFORM.
复制代码
回复

使用道具 举报

zlzt
感谢分享
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表