SAP Query IMRG Measure文档

时间:2017-06-23 09:33:04

标签: sap

我正在学习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.

感谢您的帮助。

2 个答案:

答案 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.