列出没有特定语言关键字的材料
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.
我对 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.