选择最近 30 天内的行

Selecting rows within last 30 days

我有一个 select 语句来获取参考订单,但现在我需要将结果限制在过去 30 天的范围内,但我不知道该怎么做.

SELECT
    *
FROM AFKO
WHERE AFKO~PLNBEZ = @reference
AND DATEDIFF( DAY, AFKO~GLTRP, @sy-datum ) >= -30
ORDER BY AFKO~GLTRP DESCENDING
INTO TABLE @it_afko.

我看过 DATEDIFF 可以进行运算,但 SAP 说该函数未知。 我正在尝试直接使用 - 运算符:

SELECT
    *
FROM AFKO
WHERE AFKO~PLNBEZ = @reference
AND AFKO~GLTRP - @sy-datum >= -30
ORDER BY AFKO~GLTRP DESCENDING
INTO TABLE @it_afko.

但是 SAP 说只能在算术表达式中使用初等算术类型。 AFKO~GLTRP 类型无效

我怎样才能得到差额?

在 opensql 中使用旧版本之前,您需要准备计算日期,如下例所示。

DATA: lv_date   TYPE sy-datum,
      reference TYPE afko-plnbez,
      it_afko   TYPE TABLE OF afko.

CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
  EXPORTING
    date            = sy-datum
    days            = 30
    months          = 0
    signum          = '-'
    years           = 0
 IMPORTING
   calc_date       = lv_date.

SELECT *
  FROM afko
  INTO TABLE @it_afko
 WHERE afko~plnbez = @reference
   AND afko~gltrp >= @lv_date
 ORDER BY afko~gltrp DESCENDING.

只需声明一个字段并相应地计算日期:

DATA(lv_date_minus_30) = sy-datum - 30.

SELECT ...
       WHERE ... gltrp >= lv_date_minus_30