使concat_lines_of()用于rawstring

gue*_*tli 2 sap abap

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

这适用于字符串,但现在无法使用rawstring:

data my_table TYPE TABLE OF rawstring.
concat_lines_of( table = my_table sep = `, `)
Run Code Online (Sandbox Code Playgroud)

如何使以上线条起作用?

在我的情况下,rawstring包含utf8编码的数据。

结果应为xstring(字节序列)

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

my_list = [my_byte_sequence1, my_byte_sequence2, my_byte_sequence3]
big_byte_sequence = b', '.join(my_list)
Run Code Online (Sandbox Code Playgroud)

San*_*ssi 5

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

如果问题仅是经典的要求,那么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'.
Run Code Online (Sandbox Code Playgroud)