列出没有特定语言关键字的材料

List materials, which don't have a specific language key

我对 ABAP 编码还很陌生。我的任务是实现一份列出所有 material 的报告,这些报告没有特定的语言键。 例如,用户在选择屏幕中输入"EN"作为语言键。因此,应该显示所有没有语言键 "EN" 的 material。 有两个表:MARA(material数据)和MAKT(语言键=SPRAS),它们通过主键(MATNR)连接。

我这样试过,还是不行:

SELECT * FROM MARA INNER JOIN MAKT ON MARA~MATNR EQ MAKT~MATNR WHERE MAKT~SPRAS NOT IN S_SPRAS

我假设,S_SPRAS 是 select 多选选项。 在这种情况下,如果您需要显示具有 none 指定语言的资料,请使用:

SELECT * INTO TABLE lt_mara
FROM MARA
  WHERE NOT EXISTS (
    SELECT * FROM MAKT WHERE MAKT~MATNR = MARA~MATNR AND MAKT~SPRAS IN S_SPRAS )

如果您需要显示没有至少一种指定语言的材料,这只会更加复杂,并且取决于您的运行时版本 - 7.50 或更低版本。

您也可以尝试使用 LEFT JOIN

跟随 SQL 语句
select mara~matnr
into table @data(gt_matnr)
from mara
left JOIN makt
  on MAKT~MATNR = MARA~MATNR and
     MAKT~SPRAS = @s_spras-low
where MAKT~MATNR IS null.