我正在学习SAP查询。
我想从设备中获取所有测量文档。
为此,我使用3个表:
EQUI, IMPTT, IMRG
查询有效,但我有所有文件,而我只想获得last one by Date
。但我不能这样做。我确定我必须添加一个自定义字段,但我已经尝试过,但它们都不起作用。
例如,我的上一个代码:
select min( IMRG~INVTS ) IMRG~RECDV
from IMRG inner join IMPTT on
IMRG~POINT = IMPTT~POINT into (INVTS, IMRGVAL)
where IMRG~POINT = IMPTT-POINT AND
IMPTT~MPOBJ = EQUI-OBJNR
and IMRG~CANCL = '' group by IMRG~MDOCM IMRG~RECDV.
ENDSELECT.
感谢您的帮助。
答案 0 :(得分:0)
您需要从IMRG获取日期和倒置的时间戳字段,因此MIN()的MIN()将是最新的 - 看起来是正确的。
但是你的GROUP BY看起来不对劲。您应该在IMPTT~POINT字段上进行分组,以便每个测量点获得一条记录。请注意,一个点IMPTT可以有许多测量(IMRG),所以像这样:
SELECT EQUI-OBJNR, IMPTT~POINT, MIN(IMRG~IMRC_INVTS)
...
GROUP BY EQUI-OBJNR, IMPTT~POINT
答案 1 :(得分:0)
如果我找到你的话,你会试图在不考虑测量点的情况下对设备进行最新的测量。所以你可以尝试这个查询,这不是那么美丽,但它只是有效。
SELECT objnr COUNT(*) MIN( invts )
FROM equi AS eq
JOIN imptt AS tt
ON tt~mpobj = eq~objnr
JOIN imrg AS ig
ON ig~point = tt~point
INTO (wa_objnr, count, wa_invts)
WHERE ig~cancl = ''
GROUP BY objnr.
SELECT SINGLE recdv FROM imrg JOIN imptt ON imptt~point = imrg~point INTO wa_imrgval WHERE invts = wa_invts AND imptt~mpobj = wa_objnr.
WRITE: / wa_objnr, count, wa_invts, wa_imrgval.
ENDSELECT.