Abap 在过去30天内选择行

Abap 在过去30天内选择行,abap,opensql,Abap,Opensql,我有一个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语句来获取引用的顺序,但现在我需要将结果限制在过去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

OpenSQL的ABAP文档在可能的函数列表中没有显示
DATEDIFF
,您从哪里得到的?为什么不计算一个等于SY-DATAM的变量,然后比较它呢?甚至只是用一个类似的
AFKO~GLTRP>=@(sy-datum-30)
(从7.50开始)?或者使用一种可能的方法(从7.51开始)?