通过ABAP编码逻辑合并范围

2020-08-18 23:38发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我需要将两个范围表(表a和表b)...

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

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


我需要将两个范围表(表a和表b)逻辑合并到第三个范围表c中。

此后,应在SELECT语句中使用此范围表c。

两个范围表都引用相同的数据元素,并且可以包含n个条目。

如果存在矛盾的条件,则应始终使用表b中的条件。

在我看来,这项任务可以通过集合论解决。

输入看起来像这样:

 range_table_a =值#((符号='I'选项='EQ'低='Z001')
                          (sign ='I'option ='EQ'low ='Z002'));

 range_table_b =值#((符号='E'选项='EQ'低='Z002'));  

在range_table_a和range_table_b进行逻辑合并之后,我希望得到此结果:

 range_table_c =值#((符号='I'选项='EQ'低='Z001')
                          (sign ='E'option ='EQ'low ='Z002'));  

有没有人在SAP标准中看到任何有关此的信息?

12条回答
骆驼绵羊
2020-08-19 00:24 .采纳回答

似乎我对我的问题造成了一些困惑,并尝试纠正它。

在当前用例中,我们有一个每天运行的报告,其中包含不同的预定义报告变体。

这些日期和时间每天固定,主要由范围表组成。

但是有时对于某些程序运行,有必要对变量进行临时更改。 为了避免仅在2个小时内更改生产系统中的变体并在之后将其还原,通过直接在生产中进行定制,将此短期更改作为"例外"进行了请求。 此临时异常的优先级应高于标准变体的范围表条目。

我还没有完全完成开发工作,但是大多数要求的测试用例已经在工作:

 METHOD check_combinations。
     check_combination(
          iv_test_name ='无冲突-必须使用较高和较低的prio范围'
          it_lower_prio = VALUE ttr_auart((sign ='I'option ='EQ'low ='Z001'))
          it_higher_prio = VALUE ttr_auart((符号='I'选项='EQ'低='Z002'))
          it_expected_result = VALUE range_c10_t((sign ='I'option ='EQ'low ='Z001')
                                                  (sign ='I'option ='EQ'low ='Z002')))。
     check_combination(
          iv_test_name ='冲突-必须使用更高的prio范围'
          it_lower_prio = VALUE ttr_auart((sign ='I'option ='EQ'low ='Z001'))
          it_higher_prio = VALUE ttr_auart((符号='E'选项='EQ'低='Z001'))
          it_expected_result = VALUE range_c10_t((sign ='E'option ='EQ'low ='Z001')))。

     check_combination(
          iv_test_name ='冲突-必须使用更高的prio范围'
          it_lower_prio = VALUE ttr_auart((sign ='I'option ='EQ'low ='Z001'))
          it_higher_prio = VALUE ttr_auart((sign ='E'option ='EQ'low ='Z001')
                                                (符号='I'选项='EQ'低='Z002'))
          it_expected_result = VALUE range_c10_t((sign ='E'option ='EQ'low ='Z001')
                                                  (sign ='I'option ='EQ'low ='Z002')))。
     check_combination(
          iv_test_name ='部分冲突-必须使用较高的prio范围和较低的表的一部分'
          it_lower_prio = VALUE ttr_auart((sign ='I'option ='EQ'low ='Z002')
                                                (符号='I'选项='EQ'低='Z001'))
          it_higher_prio = VALUE ttr_auart((符号='E'选项='EQ'低='Z001'))
          it_expected_result = VALUE range_c10_t((sign ='I'option ='EQ'low ='Z002')
                                                  (sign ='E'option ='EQ'low ='Z001')))。
     "支票之间
     check_combination(
          iv_test_name ='无冲突-必须使用较高prio范围和较低prio表的所有值'
          it_lower_prio = VALUE ttr_kunwe((sign ='I'option ='BT'low ='1000'high ='2000'))
          it_higher_prio = VALUE ttr_kunwe((sign ='I'option ='BT'low ='1999'high ='2005'))
          it_expected_result = VALUE range_c10_t((sign ='I'option ='BT'low ='1000'high ='2005')))。

     check_combination(
          iv_test_name ='冲突-必须使用较高的prio范围,因为它是较低的prio的对面'
          it_lower_prio = VALUE ttr_kunwe((sign ='E'option ='BT'low ='1000'high ='2000'))
          it_higher_prio = VALUE ttr_kunwe((sign ='I'option ='EQ'low ='1001')))
          it_expected_result = VALUE range_c10_t((sign ='I'option ='EQ'low ='1001')))。


   终结法。
 

我的解决方案基于标准类CL_RSMDS_DDIC_UNIVERSE。

因此,每个具有类似用例的人,只需检查Report RSMDS_DEMO即可了解如何使用此set API:

对我来说,这个问题已解决。

一周热门 更多>