二维码

[基础语法] ABAP中的系统变量SY-INDEX与SY-TABIX区别

Twilight发表于 2014-12-30 19:05Twilight 最后回复于 2014-12-30 19:05 [复制链接] 3337 0

系统变量SY-INDEX与SY-TABIX是用来记录循环的次数或者索引的。
不同的是SY-INDEX在DO....ENDDO中是有效的,而SY-TABIX在LOOP....ENDLOOP中及READ内表时获取相应的索引。

下面的小实例,一看就明白了
  1. DATA:BEGIN OF student OCCURS 0,
  2.         name(10) TYPE c,
  3.         age TYPE i,
  4.      END OF student.

  5. DATA dent LIKE LINE OF student.

  6. student-name = 'JACK'.
  7. student-age = 20.
  8. APPEND student.

  9. student-name = 'JIM'.
  10. student-age = 25.
  11. APPEND student.

  12. student-name = 'TOMMY'.
  13. student-age = 28.
  14. APPEND student.

  15. student-name = 'BUSHI'.
  16. student-age = 20.
  17. APPEND student.

  18. student-name = 'LILY'.
  19. student-age = 26.
  20. APPEND student.

  21. student-name = 'ALEX'.
  22. student-age = 28.
  23. APPEND student.

  24. WRITE: '1.LOOP循环'.
  25. WRITE: / '-----------------------------------------------'.
  26. LOOP AT student.

  27.   WRITE: / 'SY-INDEX=',sy-index LEFT-JUSTIFIED, "LEFT-JUSTIFIED  输出向左对齐
  28.            'SY-TABIX=',sy-tabix LEFT-JUSTIFIED,
  29.            'NAME=',student-name LEFT-JUSTIFIED,
  30.            'AGE=',student-age LEFT-JUSTIFIED.
  31. ENDLOOP.

  32. WRITE: / '-----------------------------------------------'.
  33. WRITE: / '2.READ INTERNAL TABLE'.
  34. WRITE: / '-----------------------------------------------'.
  35. READ TABLE student INTO dent WITH KEY name = 'ALEX'. "按具体字段值读取内表
  36. WRITE: /   'SY-INDEX=',sy-index LEFT-JUSTIFIED,
  37.            'SY-TABIX=',sy-tabix LEFT-JUSTIFIED, "读取内表时,返回相应数据在内表中的索引
  38.            'NAME=',dent-name LEFT-JUSTIFIED,
  39.            'AGE=',dent-age LEFT-JUSTIFIED.


  40. READ TABLE student INTO dent WITH KEY name = 'BUSHI'. "按具体字段值读取内表
  41. WRITE: /'SY-INDEX=',sy-index LEFT-JUSTIFIED,
  42.         'SY-TABIX=',sy-tabix LEFT-JUSTIFIED,
  43.         'NAME=',dent-name LEFT-JUSTIFIED,
  44.         'AGE=',dent-age LEFT-JUSTIFIED.
  45. CLEAR sy-tabix.

  46. WRITE: / '-----------------------------------------------'.
  47. WRITE: / '3.DO...ENDDO'.
  48. WRITE: / '-----------------------------------------------'.

  49. DO 5 TIMES.
  50.   WRITE:/ 'SY-INDEX=',sy-index LEFT-JUSTIFIED,
  51.           'SY-TABIX=',sy-tabix LEFT-JUSTIFIED.
  52. ENDDO.

  53. WRITE: / '-----------------------------------------------'.
复制代码

程序执行结果:
SY-TABIX.jpg
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

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