abap - 将两个内部表连接并聚合为一张
问题描述
我需要按照 True_Origin 和 True_Destination 级别将以下两个表聚合为一个。
表 2 ( IT_DATES_OD
):
FDate2 Flight_Number2 Origin2 Destination2 Amount3 Amount4
20190501 123 DXB LOS 5 12
20190501 123 DXB LOS 22 558
20190501 123 DXB LOS 2556 4585
表一(IT_TOD_OD
):
Flight_Date_OD Flight_Number_OD Origin Destination True_origin True_destination Net_Net_Net Amount2
20190501 123 DXB LOS DXB NBO 5 12
20190501 123 DXB LOS DXB ADD 22 558
20190501 123 DXB LOS DXB LOL 2556 4585
我可以使用常用字段(日期、航班号、出发地、目的地)进行聚合,但无法在 True_origin 和 True_destination 的详细级别上进行聚合。
SORT IT_DATES_TOD BY FDATE2 FLIGHT_NUMBER2 ORIGIN2 DESTINATION2 ASCENDING.
CLEAR WA_OUTPUT.
LOOP AT IT_DATES_TOD INTO WA_DATES_TOD WHERE FDATE2 <> ''.
WA_OUTPUT-FDATE = WA_DATES_TOD-FDATE2.
WA_OUTPUT-FLIGHT_NUMBER = WA_DATES_TOD-FLIGHT_NUMBER2.
WA_OUTPUT-ORIGIN = WA_DATES_TOD-ORIGIN2.
WA_OUTPUT-DESTINATION = WA_DATES_TOD-DESTINATION2.
LOOP AT IT_TOD_OD INTO WA_TOD_OD
WHERE FLIGHT_DATE_OD = WA_DATES_TOD-FDATE2
AND FLIGHT_NUMBER_OD = WA_DATES_TOD-FLIGHT_NUMBER2
AND ORIGIN = WA_DATES_TOD-ORIGIN2
AND DESTINATION = WA_DATES_TOD-DESTINATION2.
WA_OUTPUT-TRUE_ORIGIN = WA_TOD_OD-TRUE_ORIGIN.
WA_OUTPUT-TRUE_DESTINATION = WA_TOD_OD-TRUE_DESTINATION.
WA_OUTPUT-NET_NET_NET = WA_TOD_OD-NET_NET_NET.
WA_OUTPUT-RE_PRO_REVFUEL = 0.
WA_OUTPUT-BLOCK_HOUR = 0.
APPEND WA_OUTPUT TO IT_OUTPUT.
ENDLOOP.
ENDLOOP.
解决方案
请查看 ABAP 中的 collect 语法:ABAP 中的 COLLECT 语句用于通过避免重复条目以及以汇总方式将工作区的组件插入内部表中。句法
COLLECT <line> INTO <itab>
当您使用 collect 语句时,会发生以下步骤。
首先,它将检查内部表中与工作区数据中的键匹配的任何记录。
- 如果找不到任何匹配的记录,则将工作区中的新数据插入到内部表中
- 如果找到任何具有相同键的记录,则不插入新记录,而是将工作区组件的数值字段值与匹配记录中的相应字段组件相加,并更新内部表记录。
你的两个 itabs 都应该使用 Destination 结构:
Date F_Number Orign Destin T_origin T_destin Amount Amount2
因此 collect 命令可以使用数字字段的添加功能。
推荐阅读
- javascript - 从对象列表中过滤键
- javascript - 无法弄清楚为什么声音不能与 javascript 代码一起播放
- javascript - 您如何在 bot v4 上设置计时器?
- javascript - 找不到变量:“视图”
- angular - 无法获取配置文件 Auth0 的访问令牌
- forms - 如何在不引发浏览器安全警报的情况下将表单从 HTTPS 页面发送到 HTTP 链接
- azure-cognitive-search - 如何在 Azure 搜索中执行不区分大小写的“OrderBy”
- macos - Groovy shell 脚本无法识别 aws 命令
- python - 替代数据框 .head(),尝试根据值打印排序字典并仅返回顶部指定的结果
- python - 我需要帮助让我的对象四处移动