写一个abap 动态内表
时间: 2024-05-08 11:20:55 浏览: 132
ABAP动态内表使用的例子
5星 · 资源好评率100%
以下是一个简单的 ABAP 动态内表的示例,它允许您在运行时动态添加和删除行:
```abap
REPORT z_dynamic_internal_table.
DATA: dynamic_table TYPE STANDARD TABLE OF any WITH DEFAULT KEY.
FIELD-SYMBOLS: <fs_table> LIKE LINE OF dynamic_table.
DATA: lv_choice TYPE i,
lv_input TYPE i.
DO.
WRITE: / '1. Add row',
/ '2. Delete row',
/ '3. Display table',
/ '4. Exit'.
WRITE: / 'Enter your choice: '.
READ lv_choice.
CASE lv_choice.
WHEN 1.
CLEAR: dynamic_table.
WRITE: / 'Enter the number of rows to add: '.
READ lv_input.
DO lv_input TIMES.
APPEND INITIAL LINE TO dynamic_table ASSIGNING <fs_table>.
<fs_table> = sy-index.
ENDDO.
WRITE: / lv_input, ' rows added to table.'.
WHEN 2.
IF dynamic_table IS INITIAL.
WRITE: / 'Table is empty.'.
ELSE.
WRITE: / 'Enter the row to delete: '.
READ lv_input.
DELETE dynamic_table INDEX lv_input.
WRITE: / 'Row ', lv_input, ' deleted from table.'.
ENDIF.
WHEN 3.
IF dynamic_table IS INITIAL.
WRITE: / 'Table is empty.'.
ELSE.
LOOP AT dynamic_table ASSIGNING <fs_table>.
WRITE: / <fs_table>.
ENDLOOP.
ENDIF.
WHEN 4.
EXIT.
ENDCASE.
ENDDO.
```
该示例使用了 `any` 类型来声明动态内表,使其可以存储任何类型的数据。通过使用 `FIELD-SYMBOLS` 语句创建一个指向动态内表的行的字段符号,我们可以轻松地访问和操作表中的数据。
在主循环中,我们使用 `CASE` 语句来根据用户的选择执行不同的操作。当用户选择添加行时,我们清空表并使用 `APPEND INITIAL LINE TO` 语句添加指定数量的新行。当用户选择删除行时,我们使用 `DELETE` 语句删除指定索引处的行。最后,当用户选择显示表时,我们使用 `LOOP AT` 语句遍历表中的所有行并将其输出到屏幕上。
阅读全文