Zeile hinzufügen, um dynamische interne Tabelle
Möchte ich hinzufügen, dass eine dynamische Tabelle, Zeile, um eine dynamische interne Tabelle.
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>.
Die Letzte Zeile ist das problem. Bekomme ich diesen syntax Fehler:
Können Sie nicht verwenden Sie die explizite oder implizite index-Operationen auf Tabellen mit
Typen, die "HASH-TABELLE" oder "ANY TABLE". "<LT_TABLE>" hat den Typ "ANY
TABELLE". Es ist möglich, dass die "TABELLE" - Zusatz nicht angegeben wurde
vor dem "<LT_TABLE>".
Wie soll ich das hinzufügen einer Zeile an die Tabelle?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die
INSERT
Betrieb:Ich hoffe, du weißt, was du tust. Mit allen, die generische Daten-handling, bezweifle ich, jemand wird in der Lage sein zu verstehen, welches problem Sie versuchen zu lösen, auf alle.
Mit
INSERT <ls_table> INTO TABLE <lt_table>.
ist richtig, aber der Grund für den Syntaxfehler ist, dass Sie definiert Ihre field-symbols:seit Ihr Programm hart codiert, um die Verwendung einer Hash-Tabelle sollte man sich eher definieren Sie Ihre Feld-Symbole als
Dadurch der syntax-checker kann Ihnen bessere syntax überprüfungen, da es weiß, die grundlegende Typ der Tabelle.
Was die syntax-Fehler ist Ihnen zu sagen ist, dass die Verwendung von Anhängen funktioniert nur mit Tabellen, die den Zugriff über einen index (standard und sortiert) und da
ANY TABLE
könnte möglicherweise hash-Tabelle (nur mit Schlüssel), die Sie nicht daran anfügen.