ABAP内表的一列通过另一列同组实现多行的字段内容拼接的效果
时间: 2024-02-10 09:10:32 浏览: 201
您可以使用 ABAP 内置的字符串拼接函数 CONCATENATE 和循环语句 LOOP AT 来实现这个功能。具体实现步骤如下:
1. 定义一个内表,其中包含需要拼接的两列数据以及拼接后的结果字段。
2. 使用 LOOP AT 语句遍历内表,按照需要拼接的列进行排序。
3. 在 LOOP AT 语句中,使用 CONCATENATE 函数将需要拼接的列的值进行拼接,并将拼接结果存入拼接后的结果字段。
4. 最后,输出拼接后的结果字段即可。
下面是一个示例代码:
```
TYPES: BEGIN OF ty_tab,
col1 TYPE string,
col2 TYPE string,
result TYPE string,
END OF ty_tab.
DATA: lt_tab TYPE STANDARD TABLE OF ty_tab,
ls_tab TYPE ty_tab.
" 填充内表数据
ls_tab-col1 = 'A'.
ls_tab-col2 = '1'.
APPEND ls_tab TO lt_tab.
ls_tab-col1 = 'A'.
ls_tab-col2 = '2'.
APPEND ls_tab TO lt_tab.
ls_tab-col1 = 'B'.
ls_tab-col2 = '3'.
APPEND ls_tab TO lt_tab.
" 拼接数据
SORT lt_tab BY col1 col2.
LOOP AT lt_tab INTO ls_tab.
IF ls_tab-col1 <> ls_tab-col1_old.
ls_tab-result = ls_tab-col2.
ELSE.
CONCATENATE ls_tab-result ',' ls_tab-col2 INTO ls_tab-result.
ENDIF.
ls_tab-col1_old = ls_tab-col1.
ENDLOOP.
" 输出结果
LOOP AT lt_tab INTO ls_tab.
WRITE: / ls_tab-col1, ls_tab-col2, ls_tab-result.
ENDLOOP.
```
在这个示例中,我们定义了一个内表 `lt_tab`,其中包含需要拼接的两列数据 `col1` 和 `col2`,以及拼接后的结果字段 `result`。然后,我们使用 `LOOP AT` 语句对内表进行遍历,并按照 `col1` 和 `col2` 进行排序。在 `LOOP AT` 循环体内部,我们使用 `CONCATENATE` 函数将需要拼接的列的值进行拼接,并将拼接结果存入 `result` 字段。最后,我们输出拼接后的结果字段即可。
注意:这个示例代码仅供参考,具体实现根据实际需求进行调整。
阅读全文