FIELD-SYMBOLS : <lfs_sales> TYPE ty_sales.
假设 li_sales 是一个包含 Sales_employee、Customer 和 customer_count 列的内部表。最初,表条目如下所示。
Sales_employee Customer customer_count
a 1 0
a 2 0
b 3 0
b 2 0
b 4 0
c 1 0
我们需要计算重复的 sales_employee 计数并更新 customer_count 字段。我们可以使用 Dirik 建议的 collect 语句,也可以使用如下所示的 control break 语句。
使用 SUM 关键字的前提是每行将 customer_count 初始化为 1,以便根据相似的 sales_employee 汇总客户数量。
LOOP AT li_sales ASSIGNING <lfs_sales>.
<lfs_sales>-customer_count = 1.
ENDLOOP.
现在条目如下所示。
Sales_employee Customer customer_count
a 1 1
a 2 1
b 3 1
b 2 1
b 4 1
c 1 1
以下代码确实更新了 customer_count 字段值。
LOOP AT li_sales INTO rec_sales.
AT END OF employee.
SUM.
MOVE-CORRESPONDING rec_sales TO rec_count.
APPEND rec_count TO li_count.
CLEAR rec_count.
ENDAT.
ENDLOOP.
SORT li_count BY employee.
LOOP AT li_sales ASSIGNING <lfs_sales>.
CLEAR rec_count.
READ TABLE li_count INTO rec_count
WITH KEY employee = <lfs_sales>-employee
BINARY SEARCH.
IF sy-subrc IS INITIAL.
<lfs_sales>-count = rec_count-count.
ENDIF.
ENDLOOP.
现在内部表被分配了 customer_count,如下所示。
Sales_employee Customer customer_count
a 1 2
a 2 2
b 3 3
b 2 3
b 4 3
c 1 1