二维码

[基础语法] Field Symbols基本使用教程

Twilight发表于 2016-10-11 13:07Twilight 最后回复于 2016-10-11 13:07 [复制链接] 6898 0

1、定义Field Symbols
  1. TYPES: tt_mara TYPE STANDARD TABLE OF mara.
  2. DATA:  t_mara TYPE tt_mara.

  3. FIELD-SYMBOLS: <lfs_mara> LIKE LINE OF t_mara.

  4. " Field symbol without type
  5. FIELD-SYMBOLS:
  6.   <lfs_any_tab> TYPE ANY TABLE,
  7.   <lfs_any> TYPE any.
复制代码

2、APPEND and INSERT操作
  1. * Append line
  2. APPEND INITIAL LINE TO t_mara ASSIGNING <lfs_mara>.
  3. <lfs_mara>-matnr = 'sapclub'.

  4. * insert table
  5. INSERT INITIAL LINE INTO t_mara ASSIGNING <lfs_mara> INDEX 2.
  6. <lfs_mara>-matnr = 'ABCDEF'.
复制代码

3、访问内表行记录
  1. * Read table
  2. READ TABLE t_mara ASSIGNING <lfs_mara> WITH KEY matnr = 'sapclub'.
  3. IF sy-subrc EQ 0.
  4.   WRITE:/ <lfs_mara>-matnr.
  5. ENDIF.

  6. * Access via Loop
  7. LOOP AT t_mara ASSIGNING <lfs_mara>.
  8.   WRITE:/ <lfs_mara>-matnr.
  9. ENDLOOP.
复制代码

4、Modify 内表行记录
  1. * READ and MODIFY
  2. READ TABLE t_mara ASSIGNING <lfs_mara> WITH KEY matnr = 'sapclub'.
  3. IF sy-subrc EQ 0.
  4.   <lfs_mara>-ersda = sy-datum.
  5. ENDIF.

  6. * LOOP and MODIFY
  7. LOOP AT t_mara ASSIGNING <lfs_mara>.
  8.   <lfs_mara>-ersda = sy-datum + 1.
  9. ENDLOOP.
复制代码

5、检查Field Symbols是否被分配ASSIGNED
  1. * Check if Field-Symbol is assigned
  2. IF <lfs_mara> IS ASSIGNED.
  3.   WRITE:/ 'Assigned'.
  4. ELSE.
  5.   WRITE:/ 'Unassigned'.
  6. ENDIF.
复制代码
注意不能使用sy-subrc = 0来判断是否被分配

6、解除Field Symbols参考关系
  1. "remvoe the reference
  2. UNASSIGN <lfs_mara>.
复制代码
UNASSIGN:初始化<FS>字段符号,执行后字段符号将不再引用内存区域
CLEAR:与UNASSIGN不同的是,作用是初始化它所指向的内存区域,而不是解除分配
回复

使用道具 举报

快速回帖

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

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