将内部表中的一组记录求和成单个记录

2020-09-24 21:17发布

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

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


嗨ABAPers,

我有一个内部表,记录如下:

说明----------数量----------价格

1。 每日----- 1000 ---------------- 52.75

2。 每日------------------- 1500 ----------- 52.75

3。 每日------------------- 1700 -------------- 52.75

4。 星期六-------------- 3000 ------------- 55.00

5。 星期日---------------- 4000 ------------- 55.00

现在,我需要将描述为" 每日"的记录合并到内部表中的单个记录中,"数量"字段是3条记录的总和。

我尝试过使用此

将lt_tab的LOOP AT放入ls_tab。

 在新的描述。
 每日总数=每日总数+ ls_tab菜单
 ENDAT。

但是并没有达到预期的效果。

关于如何解决这个问题的任何想法?

谢谢。

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

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


嗨ABAPers,

我有一个内部表,记录如下:

说明----------数量----------价格

1。 每日----- 1000 ---------------- 52.75

2。 每日------------------- 1500 ----------- 52.75

3。 每日------------------- 1700 -------------- 52.75

4。 星期六-------------- 3000 ------------- 55.00

5。 星期日---------------- 4000 ------------- 55.00

现在,我需要将描述为" 每日"的记录合并到内部表中的单个记录中,"数量"字段是3条记录的总和。

我尝试过使用此

将lt_tab的LOOP AT放入ls_tab。

 在新的描述。
 每日总数=每日总数+ ls_tab菜单
 ENDAT。

但是并没有达到预期的效果。

关于如何解决这个问题的任何想法?

谢谢。

付费偷看设置
发送
9条回答
天桥码农
1楼-- · 2020-09-24 22:11

我不敢向您推荐LOOP AT GROUP BY。 使用IF吗?

Haoba3210
2楼-- · 2020-09-24 22:10

LOOP与AT NEW/AT END OF也可以轻松地与SUM结合。

haha101010
3楼-- · 2020-09-24 21:49

再次阅读关于LOOP和 AT(组)语句,那么您能猜到应该怎么做

  • 在AT NEW/ENDAT区块中
  • 超出AT块
  • 在AT END OF/ENDAT区块中

当且仅当您掌握了该词(以及Abap的最新版本)时,请阅读在Itab上使用LOOP-GROUP BY

Aaron 3364
4楼-- · 2020-09-24 21:50

不同意!

95年老男孩
5楼-- · 2020-09-24 21:52

您可以尝试以下代码。 希望会有所帮助。

CLASS演示定义。
公共部分。
类方法:
主要,
初始化。
私有部分。
类型:ty_data的开头,
desc TYPE c长度30,
数量类型i,
价格类型p长度10小数2,
ty_data结束。

CLASS-DATA
t_data TYPE标准数据表ty_data。
ENDCLASS。

CLASS演示实现。
方法main。
initialize()。

DATA(out)= cl_demo_output => new()。

类型:
ty_sum的开始,
desc类型c长度30,
数量ty i,
ty_sum的结尾。
数据t_sum类型标准值ty_sum的表。
DATA s_sum像线 的t_sum。

循环t_data分配字段符号(
GROUP BY(键= -desc)
升序
分配字段符号( )。
清除s_sum。
在组上分配循环符号()。
s_sum-desc = -desc。
s_sum-qty = s_sum-qty + <行>-数量
ENDLOOP。
APPEND s_sum至t_sum。
ENDLOOP。
out-> write(t_sum)。
out-> display()。
ENDMETHOD。
方法初始化。
t_data = VALUE#((desc ='每日'数量= 1000价格= '52 .75')
(desc ='每日'数量= 1500价格= '52 .75 ')
(desc ='每日'数量= 1700价格= '52 .75')
(desc ='星期六'数量= 3000价格= '55 .00')
(desc ='周日'数量= 4000 价格= '55 .00'))。

ENDMETHOD。
ENDCLASS。

开始选择。

demo => main()。

追夢秋陽
6楼-- · 2020-09-24 22:06

仅在满足先决条件的情况下。

一周热门 更多>