ABAP SQL捕获在职员工的日期范围的记录

2020-09-26 10:17发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


pa0000/pa0001中的记录有两个记录,如下所示:

Begda Endda

2017年3月7日31.12.9999

03.01.2017 02.07.2017

选择屏幕的日期范围为:低:2017年1月7日和高:2017年7月31日

ABAP代码编写如下:

从Pa0001表中选择数据
   选择PERNR
          恩达
          贝格达
          珀斯
          珀斯
     从PA0001
     进入表T_PA0001
     S_PERNR中的PERNR []和
           BEGDA <= S_BUDAT-LOW AND
           ENDDA> = S_BUDAT-HIGH AND
           PERSG IN S_EMPGR []和
           在S_EMPSG中输入PERSK
           GSBER IN S_WERKS和
          BTRTL ='FURC'。

上述两条记录均未捕获。

我想通过使用方法" 排除所有错误的选项"而不是当前方法"列出所有可接受的选项"来重新编写代码,如下所示。

不是(pa0001-begda> s_budat-high或pa0001-endda

在这方面的任何帮助将不胜感激。

热烈的问候,

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


pa0000/pa0001中的记录有两个记录,如下所示:

Begda Endda

2017年3月7日31.12.9999

03.01.2017 02.07.2017

选择屏幕的日期范围为:低:2017年1月7日和高:2017年7月31日

ABAP代码编写如下:

从Pa0001表中选择数据
   选择PERNR
          恩达
          贝格达
          珀斯
          珀斯
     从PA0001
     进入表T_PA0001
     S_PERNR中的PERNR []和
           BEGDA <= S_BUDAT-LOW AND
           ENDDA> = S_BUDAT-HIGH AND
           PERSG IN S_EMPGR []和
           在S_EMPSG中输入PERSK
           GSBER IN S_WERKS和
          BTRTL ='FURC'。

上述两条记录均未捕获。

我想通过使用方法" 排除所有错误的选项"而不是当前方法"列出所有可接受的选项"来重新编写代码,如下所示。

不是(pa0001-begda> s_budat-high或pa0001-endda

在这方面的任何帮助将不胜感激。

热烈的问候,

付费偷看设置
发送
2条回答
My梦
1楼-- · 2020-09-26 10:38

如果我猜到您的实际要求,则应该正确地选择重叠的间隔(在结束之前开始,在另一个间隔开始之后结束)

" BEGDA LE S_BUDAT-LOW和ENDDA GE S_BUDAT-HIGH为假,因为它仅选择包含整个选择的区间
 " BEGDA LE S_BUDAT-HIGH和ENDDA GE S_BUDAT-LOW"是正确的,因为它选择了与选择重叠的区间

不要忘记,排除标准通常不会取得良好的表现。

否(BEGDA GT S_BUDAT-HIGH或ENDDA LT S_BUDAT-LOW)"是正确的,但是性能不佳
haha101010
2楼-- · 2020-09-26 10:37

所以,您的问题是如何从PA0001中获得那些 在所有日期间隔S_BUDAT-LOW到S_BUDAT-HIGH都没有重叠?

为此,请执行以下操作:

哪里BEGDA> S_BUDAT-HIGH或ENDDA                                                                     

一周热门 更多>