重复记录读取到内部表

时间:2016-02-22 07:57:17

标签: abap opensql

我的内部表在show时有双重记录,ex:10在开票凭证中,但在我的内部表中有20。显示MAKTX,其中SPEC-TEST被添加到重复值。

SELECT * INTO CORRESPONDING FIELDS OF wa_alv_list
FROM VBRK
INNER JOIN VBRP ON VBRK~VBELN = VBRP~VBELN "BILLING DOCUMENTS (HEADER)
AND VBRK~VKORG = VBRP~VKORG_AUFT
INNER JOIN MAKT ON VBRP~MATNR = MAKT~MATNR
WHERE VBRK~VKORG = VKORG
AND VBRK~BUKRS = BUKRS
AND VBRK~FKDAT IN S_FKDAT
AND VBRP~WERKS IN S_WERKS
ORDER BY VBRK~FKDAT.

上面的sql是否导致错误?

1 个答案:

答案 0 :(得分:3)

您正在加入MAKT(材料文本),但对语言没有限制。可以使用两种语言的材料文本来解释双重数量的条目。

你能给出wa_alv_list的定义吗?或者尝试添加MAKT-LANGU(或MAKT-SPRAS - 我不确定哪一个)和材料文本,以检查您是否获得每种语言的条目。

我建议定义一个参数:

PARAMETERS: P_SPRAS like SY-LANGU OBLIGATORY DEFAULT SY-LANGU.

现在,您可以在开始报告时选择语言(例如,使用F4)。

SELECT * INTO CORRESPONDING FIELDS OF wa_alv_list
  FROM VBRK
  INNER JOIN VBRP ON VBRK~VBELN = VBRP~VBELN "BILLING DOCUMENTS (HEADER)
  AND VBRK~VKORG = VBRP~VKORG_AUFT
  INNER JOIN MAKT ON VBRP~MATNR = MAKT~MATNR
  WHERE VBRK~VKORG = VKORG
  AND VBRK~BUKRS = BUKRS
  AND VBRK~FKDAT IN S_FKDAT
  AND VBRP~WERKS IN S_WERKS
  and MAKT~SPRAS = p_SPRAS  "<---Added
  ORDER BY VBRK~FKDAT.

一个警告:如果材料中没有所选语言的文本,则找不到任何条目。