[英]Create a structure from a dynamically assigned <itab>
In a method I have a reference to a table that was declared like this:在一个方法中,我引用了一个声明如下的表:
DATA: tabname TYPE tabname,
dref TYPE REF TO data,
FIELD-SYMBOLS: <itab> TYPE ANY TABLE.
CREATE DATA dref TYPE TABLE OF (tabname).
ASSIGN dref->* TO <itab>.
SELECT * FROM (tabname)
UP TO 5 ROWS
INTO TABLE <itab>.
How do I create a structure based on ?如何创建基于 的结构?
Just use good ol' RTTS for that.只需使用好的 ol' RTTS 即可。 You can create reference and read directly into it
您可以创建参考并直接读入其中
FIELD-SYMBOLS: <itab> TYPE STANDARD TABLE.
DATA: ref_wa TYPE REF TO data,
ref_rowtype TYPE REF TO cl_abap_structdescr,
ref_tabletype TYPE REF TO cl_abap_tabledescr.
ref_rowtype ?= cl_abap_typedescr=>describe_by_name( tabname ).
CREATE DATA ref_wa TYPE HANDLE ref_rowtype.
READ TABLE <itab> REFERENCE INTO ref_wa INDEX 1.
or create field-symbol based on this reference and use it in READ TABLE或基于此参考创建字段符号并在 READ TABLE 中使用它
ASSIGN ref_wa->* TO FIELD-SYMBOL(<fsym_wa>).
READ TABLE <itab> ASSIGNING <fsym_wa> INDEX 1.
Pay attention I declared <itab>
as STANDARD table to get rid of index error operation you got.请注意,我将
<itab>
声明为STANDARD表,以消除您获得的索引错误操作。
UPDATE : for creating structure from <itab>
object use this syntax:更新:要从
<itab>
对象创建结构,请使用以下语法:
ref_tabletype ?= cl_abap_typedescr=>describe_by_data( <itab> ).
ref_rowtype ?= ref_tabletype->get_table_line_type( ).
The last two lines will be identical.最后两行将是相同的。
1.You define a ANY
field symbol ans use ASSIGNING
1.您定义一个
ANY
字段符号并使用ASSIGNING
FIELD-SYMBOLS:
<line> type any.
LOOP at <itab> ASSIGNING <line>.
ENDLOOP.
2.You define a ANY
field symbol ans use INTO
2.您定义了一个
ANY
字段符号并使用INTO
FIELD-SYMBOLS:
<line> type any.
CREATE DATA dref like line of <itab>.
ASSIGN dref->* to <line>.
LOOP at <itab> INTO <line>.
ENDLOOP.
You can use inline declaration to define WA like this.您可以像这样使用内联声明来定义 WA。
READ TABLE <itab> INTO (<wa>)
or declare WA/Field symbol first using FIELD SYMBOL <wa> TYPE ANY
then read table with READ TABLE <tab> ASSIGNING <wa>
READ TABLE <itab> INTO (<wa>)
或首先使用FIELD SYMBOL <wa> TYPE ANY
声明 WA/Field 符号,然后使用READ TABLE <tab> ASSIGNING <wa>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.