简体   繁体   中英

SAP Query IMRG Measure documents

I'm learning SAP queries.

I want to get all the Measure documents from an equipement. To do that, I use 3 tables : EQUI, IMPTT, IMRG

The query works but I have all documents instead I only want to get the last one by Date . But I can't do that. I'm sure that I have to add a custom field, but I have tried but none of them works.

For example, my last code :

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.

Thanks for your help.

You will need to get the date from IMRG, and the inverted timestamp field, so the MIN() of this will be the most recent - that looks correct.

However your GROUP BY looks wrong. You should be grouping on the IMPTT~POINT field so that you get one record per measurement point. Note that one Point IMPTT can have many measurements (IMRG), so something like this:

SELECT EQUI-OBJNR, IMPTT~POINT, MIN(IMRG~IMRC_INVTS) 
...
GROUP BY EQUI-OBJNR, IMPTT~POINT

If I got you correctly, you are trying to get the freshest measurement of the equipment disregard of measurement point. So you can try this query, which is not so beautiful, but it just works.

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM