gpt4 book ai didi

abap - 添加行到动态内部表

转载 作者:行者123 更新时间:2023-12-04 22:42:29 38 4
gpt4 key购买 nike

我想将动态表行添加到动态内部表中。

DATA: lo_structdescr    TYPE REF TO cl_abap_structdescr,
lo_tabledescr TYPE REF TO cl_abap_tabledescr,
lt_components TYPE abap_component_tab,
ls_component TYPE LINE OF abap_component_tab,
lt_keys TYPE abap_keydescr_tab,
lt_table TYPE REF TO data,
ls_table TYPE REF TO data.

FIELD-SYMBOLS: <ls_table> TYPE any,
<lt_table> TYPE ANY TABLE,
<lv_value> TYPE any.


MOVE 'COMP1' TO ls_component-name.
ls_component-type ?= cl_abap_elemdescr=>get_string( ).
INSERT ls_component INTO TABLE lt_components.

MOVE 'COMP2' TO ls_component-name.
ls_component-type ?= cl_abap_elemdescr=>get_i( ).
INSERT ls_component INTO TABLE lt_components.

lo_structdescr ?= cl_abap_structdescr=>create( lt_components ).

CREATE DATA ls_table TYPE HANDLE lo_structdescr.
ASSIGN ls_table->* TO <ls_table>.

lo_tabledescr ?= cl_abap_tabledescr=>create( p_line_type = lo_structdescr
p_table_kind = cl_abap_tabledescr=>tablekind_hashed
p_unique = abap_true
p_key = lt_keys
p_key_kind = cl_abap_tabledescr=>keydefkind_default ).

CREATE DATA lt_table TYPE HANDLE lo_tabledescr.
ASSIGN lt_table->* TO <lt_table>.


ASSIGN COMPONENT 'COMP1' OF STRUCTURE <ls_table> TO <lv_value>.
<lv_value> = 'test'.

APPEND <ls_table> TO <lt_table>.

最后一行是问题。我收到此语法错误:

You cannot use explicit or implicit index operations on tables with types "HASHED TABLE" or "ANY TABLE". "<LT_TABLE>" has the type "ANY TABLE". It is possible that the "TABLE" addition was not specified before "<LT_TABLE>".



我应该如何在表格中添加一行?

最佳答案

使用 INSERT <ls_table> INTO TABLE <lt_table>.是正确的,但语法错误的原因是您将字段符号定义为:

      <lt_table>  TYPE ANY TABLE, 

由于您的程序被硬编码为使用哈希表,因此您应该将字段符号定义为
      <lt_table>  TYPE HASHED TABLE,

通过这样做,语法检查器可以为您提供更好的语法检查,因为它知道表的基本类型。

语法错误告诉您的是,使用 append 仅适用于可通过索引(标准和排序)访问的表,因为 ANY TABLE可能是哈希表(只能通过键访问),您不能附加到它。

关于abap - 添加行到动态内部表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19536523/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com