在日常 ABAP 开发里,合并两份数据集属于那种看似简单、却很容易在边界条件上翻车的任务:两边的结构不完全一致;目标表是SORTED TABLE且带UNIQUE KEY;数据里又偏偏会出现重复键。很多团队在这种场景里会写一堆READ TABLE、IF sy-subrc、MODIFY,逻辑绕、性能也不稳定。
更现代的写法是:把映射、合并、去重策略交给语言能力,用更少的语句表达更清晰的意图,同时把会 dump 的路径从一开始就避开。
下面用一个可直接在 ADT 里运行的例子,拆解这类问题的关键点,并给出两种实现风格:一种靠INSERT,一种靠CORRESPONDING(更像声明式合并)。
场景设定:两份表、结构不一致、目标表必须唯一
需求很常见:你已经有一份“主数据集”(已在结果里),还要把另一份“补充数据集”并进去。两份数据都有统一标识IDENT,但字段并不完全一致。
lt_sorted:目标结构更精简,且目标表是SORTED TABLE WITH UNIQUE KEY identlt_unsorted:来源是STANDARD TABL