我的内部表在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是否导致错误?
答案 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.
一个警告:如果材料中没有所选语言的文本,则找不到任何条目。