abap:从现有表创建动态内部表

abap:从现有表创建动态内部表,abap,netweaver,Abap,Netweaver,我有以下内部表格: VBELN POSNR ELEMENT VALUE 4711 10 E1 12 4711 10 E2 23 ABAP(框架、类等)中是否存在任何可能性,因此我可以在运行时快速创建一个新的内部表,如下所示: VBELN POSNR E1 E2 4711 10 12 23 非常感谢您的帮助 谢谢,BR。是的。您需要的是ABAP运行时类型服务(RTTS),更准确地说是 对。您

我有以下内部表格:

VBELN   POSNR   ELEMENT VALUE

4711    10      E1      12      
4711    10      E2      23
ABAP(框架、类等)中是否存在任何可能性,因此我可以在运行时快速创建一个新的内部表,如下所示:

VBELN   POSNR   E1  E2

4711    10      12  23
非常感谢您的帮助


谢谢,BR。

是的。您需要的是ABAP运行时类型服务(RTTS),更准确地说是


对。您需要的是ABAP运行时类型服务(RTTS),更准确地说是


非常感谢你的快速反应,弗洛里安!一个小问题。我在第4行得到一个语法错误,说“VBELN_Dexcript”的类型不能在“type”的类型中转换“。您有相同的问题吗?仅在文本编辑器中将其放在一起,因此可能会有轻微的语法错误。”。但它是有效的。这样做了好几次。在第1行和第2行中添加了一个
CAST
,以解决您提到的问题。请注意,我不知道
VALUE
列后面的数据字典数据元素。您可能想用数据元素的真实名称来交换它。再次感谢您,Florian。我刚刚检查了RTTC,它是一个非常强大的框架。我还在学习,如果我问一个小问题,希望没问题:现在我得到了和以前一样的错误,但在第12行,但我想我不能在那里施放,或者?我在第8行做了如下更改:数据(值描述符)=CAST cl\u abap\u typedescr(cl\u abap\u typedescr=>description by_name('value'))。但是仍然会得到错误。@dyz这可能是一个警告而不是错误,因为当强制类型与原始结果类型相同时,强制类型转换是无用的!非常感谢你的快速反应,弗洛里安!一个小问题。我在第4行得到一个语法错误,说“VBELN_Dexcript”的类型不能在“type”的类型中转换“。您有相同的问题吗?仅在文本编辑器中将其放在一起,因此可能会有轻微的语法错误。”。但它是有效的。这样做了好几次。在第1行和第2行中添加了一个
CAST
,以解决您提到的问题。请注意,我不知道
VALUE
列后面的数据字典数据元素。您可能想用数据元素的真实名称来交换它。再次感谢您,Florian。我刚刚检查了RTTC,它是一个非常强大的框架。我还在学习,如果我问一个小问题,希望没问题:现在我得到了和以前一样的错误,但在第12行,但我想我不能在那里施放,或者?我在第8行做了如下更改:数据(值描述符)=CAST cl\u abap\u typedescr(cl\u abap\u typedescr=>description by_name('value'))。但是仍然会得到错误。@dyz这可能是一个警告而不是错误,因为当强制类型与原始结果类型相同时,强制类型转换是无用的!
DATA(vbeln_descriptor) = CAST cl_abap_datadescr( cl_abap_typedescr=>describe_by_name( 'VBELN' ) ).
DATA(posnr_descriptor) = CAST cl_abap_datadescr( cl_abap_typedescr=>describe_by_name( 'POSNR' ) ).
DATA(components) = VALUE abap_component_tab( ( name = 'VBELN'
                                               type = vbeln_descriptor )
                                             ( name = 'POSNR'
                                               type = posnr_descriptor ) ).

DATA(value_descriptor) = cl_abap_typedescr=>describe_by_name( 'VALUE' ).
LOOP AT vbeln_rows INTO DATA(vbeln_row).
  INSERT VALUE #( 
      name = vbeln_row-element
      type = value_descriptor )
    INTO TABLE components.
ENDLOOP.

DATA(row_descriptor) = cl_abap_structdescr=>get( components ).
DATA(table_descriptor) = cl_abap_tabledescr=>create( row_descriptor ).

DATA itab TYPE REF TO data.
CREATE DATA itab TYPE HANDLE table_descriptor.