范围内的最大数据

2020-08-23 04:58发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我有一系列数据,我想知道...

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

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


你好

我有一系列数据,我想知道其中包含的最大数据是什么。

我为我的英语致歉,我尝试使用一些示例来更好地解释

数据:lt_datum数据的TYPE RANGE。

_______

示例1

标志选项低高
   I GT 20.02.2020
 

在这种情况下很简单:最大值为31.12.9999

_______

示例2

标志选项低高
   我BT 20.02.2020 31.12.2020
   情商30.09.2020
   我BT 01.01.2019 31.12.2019
   I LE 01.01.2016
 

我知道这是一种愚蠢的填充范围的模式,但我想知道在这种情况下的最大值31.12.2020

_______

示例3

标志选项低高
   E BT 20.02.2020 31.12.2020
   情商30.09.2020
   我BT 01.01.2019 31.12.2019
   I LE 01.01.2016
 

也许tis是一种更愚蠢的方式来填充范围...但是我想知道在这种情况下的最大值31.12.2019

那么...有一个简单的方法可以得到这个日期吗? 如果我有一个包含所有可用数据的表,就可以轻松完成,就像我将使用该范围执行SELECT MAX一样。。。我从来没有见过这样的表。

那么,您有什么建议吗?

谢谢。

此致

Guido

7条回答
hongfeng1314
2020-08-23 05:51

感谢弗雷德里克(Frederic)为提供测试课程所做的努力(如果OP始终能够做到这一点,那将是一个奇妙的尝试 世界),我可以找到一个最简单的算法,然后添加了另一个测试用例(Frederic提到的那些"奇怪的"例子):

其他测试方法:

 METHODS high_values_excluded FOR 测试。

 方法high_values_excluded。
   DATA(my_input_range)=值trgr_date((符号='I'选项='BT'低='20200220'高='20201231')
                                           (sign ='E'option ='BT'low ='20201230'high ='20201231'))。
   DATA(max_value)= o_cut-> get_max_date_from_range(my_input_range)。
   cl_abap_unit_assert => assert_equals(
     行为= max_value
     exp ='20201229')。
 终结法。
 

短代码,适用于所有测试用例:

 CLASS lc_date_calculation DEFINITION。
   公共部分。
     方法get_max_date_from_range
       输入
         date_range TYPE trgr_date
       正在返回
         VALUE(最大日期)TYPE数据表。
 ENDCLASS。
 类别lc_date_calculation IMPLEMENTATION。
   方法get_max_date_from_range。
     数据日期类型为d的非唯一键table_line。
     循环至date_range参考数据(lr_line_range)。
       如果lr_line_range-> low不是INITIAL。
         收集lr_line_range->低INTO日期。
         收集转换d(lr_line_range-> low-1)放入日期。
         收集转换d(lr_line_range-> low + 1)放入日期。
       万一。
       如果lr_line_range-> high不是INITIAL。
         收集lr_line_range->高INTO日期。
         收集转换d(lr_line_range-> high-1)放入日期。
         收集转换d(lr_line_range-> high + 1)放入日期。
       万一。
     结局。
     将转换d('99991231')收集到日期中。
     在table_line不在date_range的地方删除日期。
     max_date = dates [lines(date)]。
   终结法。
 ENDCLASS。

一周热门 更多>