1, 问题描述
使用Sort进行全表排序时,发现排序结果不正确,代码如下:
1 2 3 4 5 6 7 8 9 10 11 |
REPORT z_sort_test. SELECT matnr, ebeln, ebelp FROM ekpo INTO TABLE @DATA(lit_ekpo). SORT lit_ekpo. BREAK-POINT. |
debug看到sort的结果有错,下图红框内的采购订单号排序不正确,其实matnr也排序不正确,此处没有截图,
2, 问题解决
查看了一下全表排序的F1帮助,在不指定排序字段的时候,sort时会按照创建表时自动生成的primary table key排序,
下面是F1原文:
上面代码中的表lit_ekpo是通过abap新语法@创建的,创建时不能自动生成table主键,所以排序失败。
改正方法有两种,
1,用传统的方法data创建内表,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
REPORT z_sort_test. TYPES:BEGIN OF ty_ekpo, matnr TYPE ekpo-matnr, ebeln TYPE ekpo-ebeln, ebelp TYPE ekpo-ebelp, END OF ty_ekpo. DATA:git_ekpo TYPE STANDARD TABLE OF ty_ekpo WITH HEADER LINE. SELECT matnr ebeln ebelp FROM ekpo INTO TABLE git_ekpo. SORT git_ekpo. |
2,排序时指定排序字段
1 2 3 4 5 6 7 |
SELECT matnr, ebeln, ebelp FROM ekpo INTO TABLE @DATA(lit_ekpo). SORT lit_ekpo BY matnr ebeln ebelp. |
修改后debug时,发现排序正确了
以上。
发表评论