【问题标题】:SAP Query IMRG Measure documentsSAP 查询 IMRG 度量文档
【发布时间】:2017-06-23 09:33:03
【问题描述】:

我正在学习 SAP 查询。

我想从设备中获取所有 Measure 文档。 为此,我使用 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.

感谢您的帮助。

【问题讨论】:

    标签: abap opensql


    【解决方案1】:

    您需要从 IMRG 获取日期,以及倒置的时间戳字段,因此 MIN() 将是最新的 - 看起来是正确的。

    但是您的 GROUP BY 看起来有问题。您应该在 IMPTT~POINT 字段上进行分组,以便每个测量点获得一条记录。请注意,一个点 IMPTT 可以有多个测量值 (IMRG),因此如下所示:

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

    【讨论】:

      【解决方案2】:

      如果我的理解正确,您正在尝试获取设备的最新测量值,而不考虑测量点。所以你可以试试这个查询,它不是很漂亮,但它确实有效。

      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.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-04-12
        • 1970-01-01
        • 2013-05-14
        • 2017-04-19
        • 2016-10-02
        • 2012-10-31
        • 1970-01-01
        相关资源
        最近更新 更多