首页 > 解决方案 > 使 concat_lines_of( ) 为 rawstring 工作

问题描述

我正在转换一些代码。过去使用字符串,现在应该使用原始字符串。

这适用于字符串,但现在使用 rawstring 失败:

data my_table TYPE TABLE OF rawstring.
concat_lines_of( table = my_table sep = `, `)

如何使上述线路工作?在我的例子中,rawstring 包含 utf8 编码的数据。结果应该是一个 xstring(字节序列)

这并不重要,但在 Python 中,这看起来像这样:

my_list = [my_byte_sequence1, my_byte_sequence2, my_byte_sequence3]
big_byte_sequence = b', '.join(my_list)

标签: abap

解决方案


经典的请求是将一个字节表连接成一个字节串,这样添加一个逗号来标识原始行是没有意义的,因为不可能将逗号存储为一个字符(替代方法:将其编码为给定的代码页)。

如果问题只是经典请求,那么类型就没有等价CONCAT_LINES_OFXSTRING

一种解决方法是使用REDUCE

DATA my_table TYPE TABLE OF xstring.

my_table = VALUE #( ( CONV #( '01FF' ) ) ( CONV #( 'BEEF' ) ) ).

DATA(my_xstring) = REDUCE #(
      INIT aux TYPE xstring
      FOR <x> IN my_table
      NEXT aux = COND #( WHEN aux IS INITIAL THEN <x> ELSE aux && <x> ) ).

ASSERT my_xstring = '01FFBEEF'.

推荐阅读