abap - 选择过去 30 天内的行
问题描述
我有一个选择语句来获取参考的顺序,但现在我需要将结果限制在过去 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.
推荐阅读
- ruby-on-rails - Docker 入口点总是返回权限被拒绝
- php - 在 Bootstrap 5 中更改主按钮颜色
- cmake - “通过魔法”将不正确的依赖项添加到 CMake 目标,variable_watch 报告没有写入
- datetime - 离线模式下的otp当前日期时间问题
- api - VS Code API 调用不适用于基本授权
- c++ - 为什么在 same_as 中检查两次相等性?
- python-3.x - 生成具有特定长度并使用掩码的所有可能的十六进制字符串列表的最有效方法
- javascript - 使用 Firestore 集合创建带有 javascript 函数的 Html 表
- markdown - jupyter实验室可以当markdown编辑器吗?
- php - 在 PHP 中正确显示 HTML 电子邮件