赛跑网

 找回密码
 注册

QQ登录

只需一步,快速开始

快捷登录

查看: 2866|回复: 10

[ABAP问题] 内表排序问题

[复制链接]
发表于 2012-11-19 18:03:56 | 显示全部楼层 |阅读模式
1赛跑币
本帖最后由 wayne2000 于 2012-11-19 18:07 编辑

排序前:
1
100
101
2

排序后:
1
2
100
101


请问各位大侠怎么做?
对了,忘说了,这一列是字符型的。

最佳答案

查看完整内容

对于字符串的排序,是按照ASC码排序的。 你内表中的记录为 1 100 101 2 200 中的这四笔记录!其实顺序已经在你APPEND记录的时候定好了。也是升序。 ABAP对字符的排序规则如下: 首先先将首字符排序。在排好的基础上,再对第二个字符进行排序···以此往下! 看看你原内表当中的顺序,是不是已经排序好了!! 如果要想解决这个问题,可以把 1 写成 001 ,2 写成 002 。 希望能帮到你!




上一篇:select 语句条件
下一篇:凭证的替代能实现同时往两个利润中心或还有成本中心记账吗?
本楼点评(0) 收起
发表于 2012-11-19 18:03:57 | 显示全部楼层
本帖最后由 SAPOK_ABAP 于 2012-11-20 13:33 编辑
wayne2000 发表于 2012-11-20 12:56
SORT 有用的话我就不来发帖子了。
SORT IT_1 BY NAME AS TEXT. 都没用。


对于字符串的排序,是按照ASC码排序的。
你内表中的记录为
1
100
101
2
200
中的这四笔记录!其实顺序已经在你APPEND记录的时候定好了。也是升序。

ABAP对字符的排序规则如下:
首先先将首字符排序。在排好的基础上,再对第二个字符进行排序···以此往下!
看看你原内表当中的顺序,是不是已经排序好了!!

如果要想解决这个问题,可以把 1 写成 001 ,2 写成 002 。
希望能帮到你!
本楼点评(0) 收起
回复

使用道具 举报

发表于 2012-11-19 18:38:16 | 显示全部楼层
直接SORT啊
SORT IT_TAB BY FIELD.默认是升序(ASCENDING)。
降序用DESCENDING这个关键字!
字符型也可以排序的!
本楼点评(0) 收起
回复

使用道具 举报

发表于 2012-11-19 20:28:51 | 显示全部楼层
学习
本楼点评(0) 收起
回复

使用道具 举报

发表于 2012-11-19 22:24:51 | 显示全部楼层
直接sort升序好了
本楼点评(0) 收起
回复

使用道具 举报

 楼主| 发表于 2012-11-20 12:56:54 | 显示全部楼层
SORT 有用的话我就不来发帖子了。
SORT IT_1 BY NAME AS TEXT. 都没用。

附上测试程序,你们运行看看吧。
  1. REPORT  Z_TEST.

  2. TYPES: BEGIN OF T_1 ,
  3.         NAME TYPE STRING ,
  4.       END OF T_1.
  5. DATA IT_1 TYPE STANDARD TABLE OF T_1 WITH HEADER LINE.


  6. IT_1-NAME = '1'.
  7. APPEND IT_1.
  8. IT_1-NAME = '100'.
  9. APPEND IT_1.
  10. IT_1-NAME = '101'.
  11. APPEND IT_1.
  12. IT_1-NAME = '2'.
  13. APPEND IT_1.
  14. IT_1-NAME = '200'.
  15. APPEND IT_1.

  16. "SORT IT_1 BY NAME.
  17. SORT IT_1 BY NAME AS TEXT.

  18. LOOP AT IT_1.
  19.   WRITE : / IT_1-NAME .
  20. ENDLOOP.
复制代码
本楼点评(0) 收起
回复

使用道具 举报

 楼主| 发表于 2012-11-20 13:44:40 | 显示全部楼层
本帖最后由 SAPOK_ABAP 于 2012-11-20 14:17 编辑

至于全部加上 前导0 ,那是可以解决问题的,谢谢!

本楼点评(0) 收起
回复

使用道具 举报

发表于 2012-11-20 14:18:16 | 显示全部楼层
wayne2000 发表于 2012-11-20 13:44
至于全部加上 前导0 ,那是可以解决问题的,谢谢!

楼主!
你没有理解我的意思!
1
100
101
2
200
内表当中的这样的记录,是不是你APPEND进去的。内表的字段是STRING类型的。已经不是数值的排序了!

按照排序规则,这已经是升序了!无论你SORT不SORT(升序)。他就是这个顺序!所以你的sort似乎没有效果,其实已经有了!
本楼点评(0) 收起
回复

使用道具 举报

发表于 2012-11-20 14:37:02 | 显示全部楼层
学习了
本楼点评(0) 收起
回复

使用道具 举报

 楼主| 发表于 2012-11-20 18:16:18 | 显示全部楼层
谢谢,理解问题。
本楼点评(0) 收起
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|联系我们|赛跑网 ( QQ:108519493QQfsq

GMT+8, 2024-5-5 14:17 , Processed in 0.310736 second(s), 55 queries .

Powered by 91SAP X3.4

© 2001-2023 91sap Team.

快速回复 返回顶部 返回列表