获取基于字段的汇总值。 (计算空值和非空值)

2020-09-13 01:41发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好, 我的任务是根据2个主键...

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

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


你好,

我的任务是根据2个主键字段和4个辅助字段来总结一个字段。

例如 1 aa bc bb'X'

1 aa bc bd''

1个aa bc bb'X'

期望的o/p是

1 aa bc bb 2 0

1 aa bc bd 0 1

根据2个主字段和4个辅助字段精确地计算非空字段和空字段。

2条回答
奄奄一息的小鱼
2020-09-13 02:32 .采纳回答

您好

将此作为模板

类型:开始于ty_value,
          ID TYPE I,
          val1 TYPE char10,
          val2 TYPE char10,
          val3 TYPE char10,
          val4 TYPE char10,
        END OF ty_value,
        ty_values带有DEFAULT KEY的ty_value类型标准表。


 类型:开始于ty_value_count。
         包括TYPE ty_value。
 类型:空的类型i,
        填满TYPE I,
        END OF ty_value_count,
        ty_value_counts带DEFAULT KEY的ty_value_count类型标准表。
 数据:value_counts类型ty_value_counts。

 DATA(值)= VALUE ty_values((id = 1 val1 ='aa'val2 ='bc'val3 ='bb'val4 = abap_true)
                                 (id = 1 val1 ='aa'val2 ='bc'val3 ='bd'val4 = abap_false)
                                 (id = 1 val1 ='aa'val2 ='bc'val3 ='bb'val4 = abap_true)
                                 (id = 1 val1 ='aa'val2 ='bc'val3 ='bb'val4 = abap_true)
                                 (id = 1 val1 ='aa'val2 ='bc'val3 ='bd'val4 = abap_false)
                                 (id = 1 val1 ='aa'val2 ='bc'val3 ='bb'val4 = abap_true)
                                 (id = 2 val1 ='aa'val2 ='bc'val3 ='bb'val4 = abap_true)
                                 (id = 2 val1 ='aa'val2 ='bc'val3 ='bb'val4 = abap_false)
                                 (id = 2 val1 ='aa'val2 ='bc'val3 ='bd'val4 = abap_false)
                                 (id = 2 val1 ='aa'val2 ='bc'val3 ='bb'val4 = abap_true))。

 *更经典的方式-大多数程序员更容易理解
 循环AT值分配字段符号()GROUP BY(id =  -id val1 =  -val1 val2 =  -val2 val3 =  -val3)。
   在组<值>分配字段符号(<组>)中循环。
     如果line_exists(value_counts [id =  -id val1 =  -val1 val2 =  -val2 val3 =  -val3])。
       ASSIGN value_counts [id = <组> -id val1 = <组> -val1 val2 = <组> -val2 val3 = <组> -val3]到FIELD-SYMBOL()。
     其他。
       在value_counts ASSIGNING 上附加对应的#( val4除外)。
     万一。
     如果 -val4是INITIAL。
       <值计数>-空= <值计数>-空+ 1。
     其他。
       <值计数>填充= <值计数>填充+ 1。
     万一。
   结局。
 结局。

 *我的首选解决方案
 数据(rd_value_counts)=值ty_value_counts(对于的GROUPS 中的值GROUP BY(id =  -id val1 =  -val1 val2 =  -val2 val3 =  -val3  )
                                                (id =  -id
                                                  val1 =  -val1
                                                  val2 =  -val2
                                                  val3 =  -val3
                                                  空=减少#(INIT cnt = 0
                                                                      FOR 在组中(val4是初始值)
                                                                      下一个cnt = cnt +1)
                                                  填充=减少#(INIT cnt = 0
                                                                      FOR 在组中(val4不是初始的)
                                                                      NEXT cnt = cnt + 1)))。
 

致谢

多米

一周热门 更多>

相关问答