Abap 将多行中的项目连接到一个字段的最快方法是什么?

Abap 将多行中的项目连接到一个字段的最快方法是什么?,abap,internal-tables,Abap,Internal Tables,在ABAP中,将同一字段的项目从多行连接到一行字段的最快方法是什么 我的程序应该报告付款清单、供应商ID和供应商电子邮件地址 电子邮件地址存储在表ADR6中,每个地址一行,以及它们所属的供应商ID 对于报告,我需要一个内部表,其中填充了供应商ID唯一键和连接的电子邮件地址,用分号分隔 如何填充这个内部表?没有真正神奇的方法来连接表中的一些字段。只需使用以下内容: data: email_addresses type string. loop at [table with addresses]

在ABAP中,将同一字段的项目从多行连接到一行字段的最快方法是什么

我的程序应该报告付款清单、供应商ID和供应商电子邮件地址

电子邮件地址存储在表ADR6中,每个地址一行,以及它们所属的供应商ID

对于报告,我需要一个内部表,其中填充了供应商ID唯一键和连接的电子邮件地址,用分号分隔


如何填充这个内部表?

没有真正神奇的方法来连接表中的一些字段。只需使用以下内容:

data: email_addresses type string.

loop at [table with addresses] assigning field symbol(<address>).
  at first.
    email_addresses = <address>-[email field].
    continue.
  endat.

  concatenate email_addresses ';' <address>-[email field] into email_addresses.
endloop.
我能想到的唯一更快的方法是使用本机SQL。

HANA解决方案 使用字符串\u aggr:

SELECT vendor, STRING_AGG(email_address,';') 
FROM ADR6
GROUP BY vendor;

HANA学院有一个专门的课程。请注意,此解决方案需要HANA SPS09。

如果您有任何性能问题,它们很可能不是由串接字符串引起的。在您的例子中,您可以从ADR6中选择所需的条目到一个内部表中,在该表上循环,将当前行中的条目添加到连接字符串中。您的代码将花费大部分时间从数据库收集数据,而不是连接字符串。提高性能的时间最好花在这上面。在OpenSQL中使用这一点非常有用。