0

我的内部表在显示时有双重记录,例如:帐单凭证中有 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是否导致错误?

4

1 回答 1

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.

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

于 2016-02-22T08:10:02.207 回答